/*
 * Copyright (C) 2007-2018 Siemens AG
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published
 * by the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
 */

/*******************************************************************
 *
 * @author Daniel.Peintner.EXT@siemens.com
 * @version 0.9.4 
 * @contact Richard.Kuntschke@siemens.com
 *
 * <p>Code generated by EXIdizer</p>
 * <p>Schema: V2G_CI_MsgDef.xsd</p>
 *
 *
 ********************************************************************/




#include "iso2EXIDatatypesDecoder.h"

#include "DecoderChannel.h"
#include "EXIHeaderDecoder.h"

#include "iso2EXIDatatypes.h"
#include "ErrorCodes.h"

#ifndef EXI_iso2_DATATYPES_DECODER_C
#define EXI_iso2_DATATYPES_DECODER_C

#if DEPLOY_ISO2_CODEC == SUPPORT_YES

/** event-code */
static uint32_t eventCode;
static int errn;
static uint32_t uint32;

/* Forward Declarations */
static int decode_iso2RetrievalMethodType(bitstream_t* stream, struct iso2RetrievalMethodType* iso2RetrievalMethodType);
static int decode_iso2AuthorizationResType(bitstream_t* stream, struct iso2AuthorizationResType* iso2AuthorizationResType);
static int decode_iso2MV_EVSEFinePositioningSetupParametersType(bitstream_t* stream, struct iso2MV_EVSEFinePositioningSetupParametersType* iso2MV_EVSEFinePositioningSetupParametersType);
static int decode_iso2X509DataType(bitstream_t* stream, struct iso2X509DataType* iso2X509DataType);
static int decode_iso2RSAKeyValueType(bitstream_t* stream, struct iso2RSAKeyValueType* iso2RSAKeyValueType);
static int decode_iso2DC_BidirectionalControlResType(bitstream_t* stream, struct iso2DC_BidirectionalControlResType* iso2DC_BidirectionalControlResType);
static int decode_iso2CostType(bitstream_t* stream, struct iso2CostType* iso2CostType);
static int decode_iso2ChargingStatusResType(bitstream_t* stream, struct iso2ChargingStatusResType* iso2ChargingStatusResType);
static int decode_iso2MeterInfoType(bitstream_t* stream, struct iso2MeterInfoType* iso2MeterInfoType);
static int decode_iso2AC_EVChargeParameterType(bitstream_t* stream, struct iso2AC_EVChargeParameterType* iso2AC_EVChargeParameterType);
static int decode_iso2AC_EVSEBidirectionalParameterType(bitstream_t* stream, struct iso2AC_EVSEBidirectionalParameterType* iso2AC_EVSEBidirectionalParameterType);
static int decode_iso2VehicleCheckOutResType(bitstream_t* stream, struct iso2VehicleCheckOutResType* iso2VehicleCheckOutResType);
static int decode_iso2MagneticVectorListType(bitstream_t* stream, struct iso2MagneticVectorListType* iso2MagneticVectorListType);
static int decode_iso2CableCheckResType(bitstream_t* stream, struct iso2CableCheckResType* iso2CableCheckResType);
static int decode_iso2ServiceDiscoveryReqType(bitstream_t* stream, struct iso2ServiceDiscoveryReqType* iso2ServiceDiscoveryReqType);
static int decode_iso2ServiceType(bitstream_t* stream, struct iso2ServiceType* iso2ServiceType);
static int decode_iso2ServiceParameterListType(bitstream_t* stream, struct iso2ServiceParameterListType* iso2ServiceParameterListType);
static int decode_iso2PMaxScheduleType(bitstream_t* stream, struct iso2PMaxScheduleType* iso2PMaxScheduleType);
static int decode_iso2SignaturePropertiesType(bitstream_t* stream, struct iso2SignaturePropertiesType* iso2SignaturePropertiesType);
static int decode_iso2PMaxScheduleEntryType(bitstream_t* stream, struct iso2PMaxScheduleEntryType* iso2PMaxScheduleEntryType);
static int decode_iso2SignatureType(bitstream_t* stream, struct iso2SignatureType* iso2SignatureType);
static int decode_iso2VehicleCheckInReqType(bitstream_t* stream, struct iso2VehicleCheckInReqType* iso2VehicleCheckInReqType);
static int decode_iso2ConnectChargingDeviceResType(bitstream_t* stream, struct iso2ConnectChargingDeviceResType* iso2ConnectChargingDeviceResType);
static int decode_iso2WeldingDetectionResType(bitstream_t* stream, struct iso2WeldingDetectionResType* iso2WeldingDetectionResType);
static int decode_iso2SessionStopResType(bitstream_t* stream, struct iso2SessionStopResType* iso2SessionStopResType);
static int decode_iso2VehicleCheckInResType(bitstream_t* stream, struct iso2VehicleCheckInResType* iso2VehicleCheckInResType);
static int decode_iso2ServiceListType(bitstream_t* stream, struct iso2ServiceListType* iso2ServiceListType);
static int decode_iso2CertificateUpdateResType(bitstream_t* stream, struct iso2CertificateUpdateResType* iso2CertificateUpdateResType);
static int decode_iso2FinePositioningSetupResType(bitstream_t* stream, struct iso2FinePositioningSetupResType* iso2FinePositioningSetupResType);
static int decode_iso2AC_EVBidirectionalParameterType(bitstream_t* stream, struct iso2AC_EVBidirectionalParameterType* iso2AC_EVBidirectionalParameterType);
static int decode_iso2DC_BidirectionalControlReqType(bitstream_t* stream, struct iso2DC_BidirectionalControlReqType* iso2DC_BidirectionalControlReqType);
static int decode_iso2CertificateUpdateReqType(bitstream_t* stream, struct iso2CertificateUpdateReqType* iso2CertificateUpdateReqType);
static int decode_iso2ConsumptionCostType(bitstream_t* stream, struct iso2ConsumptionCostType* iso2ConsumptionCostType);
static int decode_iso2SAScheduleListType(bitstream_t* stream, struct iso2SAScheduleListType* iso2SAScheduleListType);
static int decode_iso2MagneticVectorSetupType(bitstream_t* stream, struct iso2MagneticVectorSetupType* iso2MagneticVectorSetupType);
static int decode_iso2LFA_EVSEFinePositioningSetupParametersType(bitstream_t* stream, struct iso2LFA_EVSEFinePositioningSetupParametersType* iso2LFA_EVSEFinePositioningSetupParametersType);
static int decode_iso2PaymentOptionListType(bitstream_t* stream, struct iso2PaymentOptionListType* iso2PaymentOptionListType);
static int decode_iso2LFA_EVSEFinePositioningParametersType(bitstream_t* stream, struct iso2LFA_EVSEFinePositioningParametersType* iso2LFA_EVSEFinePositioningParametersType);
static int decode_iso2RelativeTimeIntervalType(bitstream_t* stream, struct iso2RelativeTimeIntervalType* iso2RelativeTimeIntervalType);
static int decode_iso2EVFinePositioningParametersType(bitstream_t* stream, struct iso2EVFinePositioningParametersType* iso2EVFinePositioningParametersType);
static int decode_iso2AlignmentCheckReqType(bitstream_t* stream, struct iso2AlignmentCheckReqType* iso2AlignmentCheckReqType);
static int decode_iso2CertificateInstallationReqType(bitstream_t* stream, struct iso2CertificateInstallationReqType* iso2CertificateInstallationReqType);
static int decode_iso2TransformsType(bitstream_t* stream, struct iso2TransformsType* iso2TransformsType);
static int decode_iso2ObjectType(bitstream_t* stream, struct iso2ObjectType* iso2ObjectType);
static int decode_iso2SensorOrderListType(bitstream_t* stream, struct iso2SensorOrderListType* iso2SensorOrderListType);
static int decode_iso2ChargeParameterDiscoveryReqType(bitstream_t* stream, struct iso2ChargeParameterDiscoveryReqType* iso2ChargeParameterDiscoveryReqType);
static int decode_iso2ParameterType(bitstream_t* stream, struct iso2ParameterType* iso2ParameterType);
static int decode_iso2SessionStopReqType(bitstream_t* stream, struct iso2SessionStopReqType* iso2SessionStopReqType);
static int decode_iso2SensorMeasurementsType(bitstream_t* stream, struct iso2SensorMeasurementsType* iso2SensorMeasurementsType);
static int decode_iso2DC_EVSEChargeParameterType(bitstream_t* stream, struct iso2DC_EVSEChargeParameterType* iso2DC_EVSEChargeParameterType);
static int decode_iso2SensorPackageListType(bitstream_t* stream, struct iso2SensorPackageListType* iso2SensorPackageListType);
static int decode_iso2MeasurementDataListType(bitstream_t* stream, struct iso2MeasurementDataListType* iso2MeasurementDataListType);
static int decode_iso2CertificateChainType(bitstream_t* stream, struct iso2CertificateChainType* iso2CertificateChainType);
static int decode_iso2SignaturePropertyType(bitstream_t* stream, struct iso2SignaturePropertyType* iso2SignaturePropertyType);
static int decode_iso2TransformType(bitstream_t* stream, struct iso2TransformType* iso2TransformType);
static int decode_iso2EMAIDType(bitstream_t* stream, struct iso2EMAIDType* iso2EMAIDType);
static int decode_iso2DSAKeyValueType(bitstream_t* stream, struct iso2DSAKeyValueType* iso2DSAKeyValueType);
static int decode_iso2EntryType(bitstream_t* stream, struct iso2EntryType* iso2EntryType);
static int decode_iso2MessageHeaderType(bitstream_t* stream, struct iso2MessageHeaderType* iso2MessageHeaderType);
static int decode_iso2WPT_EVChargeParameterType(bitstream_t* stream, struct iso2WPT_EVChargeParameterType* iso2WPT_EVChargeParameterType);
static int decode_iso2DisconnectChargingDeviceReqType(bitstream_t* stream, struct iso2DisconnectChargingDeviceReqType* iso2DisconnectChargingDeviceReqType);
static int decode_iso2ChargeLoopReqType(bitstream_t* stream, struct iso2ChargeLoopReqType* iso2ChargeLoopReqType);
static int decode_iso2V2GRequestType(bitstream_t* stream, struct iso2V2GRequestType* iso2V2GRequestType);
static int decode_iso2MeteringReceiptResType(bitstream_t* stream, struct iso2MeteringReceiptResType* iso2MeteringReceiptResType);
static int decode_iso2SessionSetupResType(bitstream_t* stream, struct iso2SessionSetupResType* iso2SessionSetupResType);
static int decode_iso2AC_BidirectionalControlReqType(bitstream_t* stream, struct iso2AC_BidirectionalControlReqType* iso2AC_BidirectionalControlReqType);
static int decode_iso2MV_EVSEFinePositioningParametersType(bitstream_t* stream, struct iso2MV_EVSEFinePositioningParametersType* iso2MV_EVSEFinePositioningParametersType);
static int decode_iso2ReferenceType(bitstream_t* stream, struct iso2ReferenceType* iso2ReferenceType);
static int decode_iso2EVSEEnergyTransferParameterType(bitstream_t* stream, struct iso2EVSEEnergyTransferParameterType* iso2EVSEEnergyTransferParameterType);
static int decode_iso2MeteringReceiptReqType(bitstream_t* stream, struct iso2MeteringReceiptReqType* iso2MeteringReceiptReqType);
static int decode_iso2KeyValueType(bitstream_t* stream, struct iso2KeyValueType* iso2KeyValueType);
static int decode_iso2SensorListType(bitstream_t* stream, struct iso2SensorListType* iso2SensorListType);
static int decode_iso2CurrentDemandReqType(bitstream_t* stream, struct iso2CurrentDemandReqType* iso2CurrentDemandReqType);
static int decode_iso2FinePositioningSetupReqType(bitstream_t* stream, struct iso2FinePositioningSetupReqType* iso2FinePositioningSetupReqType);
static int decode_iso2LFA_EVFinePositioningSetupParametersType(bitstream_t* stream, struct iso2LFA_EVFinePositioningSetupParametersType* iso2LFA_EVFinePositioningSetupParametersType);
static int decode_iso2SAScheduleTupleType(bitstream_t* stream, struct iso2SAScheduleTupleType* iso2SAScheduleTupleType);
static int decode_iso2WPT_EVSEChargeParameterType(bitstream_t* stream, struct iso2WPT_EVSEChargeParameterType* iso2WPT_EVSEChargeParameterType);
static int decode_iso2FinePositioningResType(bitstream_t* stream, struct iso2FinePositioningResType* iso2FinePositioningResType);
static int decode_iso2BodyBaseType(bitstream_t* stream, struct iso2BodyBaseType* iso2BodyBaseType);
static int decode_iso2ServiceDetailResType(bitstream_t* stream, struct iso2ServiceDetailResType* iso2ServiceDetailResType);
static int decode_iso2PowerDeliveryReqType(bitstream_t* stream, struct iso2PowerDeliveryReqType* iso2PowerDeliveryReqType);
static int decode_iso2PairingResType(bitstream_t* stream, struct iso2PairingResType* iso2PairingResType);
static int decode_iso2AuthorizationReqType(bitstream_t* stream, struct iso2AuthorizationReqType* iso2AuthorizationReqType);
static int decode_iso2ParameterSetType(bitstream_t* stream, struct iso2ParameterSetType* iso2ParameterSetType);
static int decode_iso2SPKIDataType(bitstream_t* stream, struct iso2SPKIDataType* iso2SPKIDataType);
static int decode_iso2PaymentDetailsResType(bitstream_t* stream, struct iso2PaymentDetailsResType* iso2PaymentDetailsResType);
static int decode_iso2SignatureMethodType(bitstream_t* stream, struct iso2SignatureMethodType* iso2SignatureMethodType);
static int decode_iso2AC_BidirectionalControlResType(bitstream_t* stream, struct iso2AC_BidirectionalControlResType* iso2AC_BidirectionalControlResType);
static int decode_iso2VehicleCheckOutReqType(bitstream_t* stream, struct iso2VehicleCheckOutReqType* iso2VehicleCheckOutReqType);
static int decode_iso2WeldingDetectionReqType(bitstream_t* stream, struct iso2WeldingDetectionReqType* iso2WeldingDetectionReqType);
static int decode_iso2AlignmentCheckResType(bitstream_t* stream, struct iso2AlignmentCheckResType* iso2AlignmentCheckResType);
static int decode_iso2PowerDemandReqType(bitstream_t* stream, struct iso2PowerDemandReqType* iso2PowerDemandReqType);
static int decode_iso2MinimumPMaxRequestType(bitstream_t* stream, struct iso2MinimumPMaxRequestType* iso2MinimumPMaxRequestType);
static int decode_iso2DisconnectChargingDeviceResType(bitstream_t* stream, struct iso2DisconnectChargingDeviceResType* iso2DisconnectChargingDeviceResType);
static int decode_iso2SessionSetupReqType(bitstream_t* stream, struct iso2SessionSetupReqType* iso2SessionSetupReqType);
static int decode_iso2PaymentDetailsReqType(bitstream_t* stream, struct iso2PaymentDetailsReqType* iso2PaymentDetailsReqType);
static int decode_iso2Generic_EVFinePositioningParametersType(bitstream_t* stream, struct iso2Generic_EVFinePositioningParametersType* iso2Generic_EVFinePositioningParametersType);
static int decode_iso2ConnectChargingDeviceReqType(bitstream_t* stream, struct iso2ConnectChargingDeviceReqType* iso2ConnectChargingDeviceReqType);
static int decode_iso2AC_EVSEChargeParameterType(bitstream_t* stream, struct iso2AC_EVSEChargeParameterType* iso2AC_EVSEChargeParameterType);
static int decode_iso2SalesTariffEntryType(bitstream_t* stream, struct iso2SalesTariffEntryType* iso2SalesTariffEntryType);
static int decode_iso2DC_EVSEBidirectionalParameterType(bitstream_t* stream, struct iso2DC_EVSEBidirectionalParameterType* iso2DC_EVSEBidirectionalParameterType);
static int decode_iso2CanonicalizationMethodType(bitstream_t* stream, struct iso2CanonicalizationMethodType* iso2CanonicalizationMethodType);
static int decode_iso2DisplayParametersType(bitstream_t* stream, struct iso2DisplayParametersType* iso2DisplayParametersType);
static int decode_iso2DC_EVBidirectionalParameterType(bitstream_t* stream, struct iso2DC_EVBidirectionalParameterType* iso2DC_EVBidirectionalParameterType);
static int decode_iso2PaymentServiceSelectionReqType(bitstream_t* stream, struct iso2PaymentServiceSelectionReqType* iso2PaymentServiceSelectionReqType);
static int decode_iso2MagneticVectorType(bitstream_t* stream, struct iso2MagneticVectorType* iso2MagneticVectorType);
static int decode_iso2PhysicalValueType(bitstream_t* stream, struct iso2PhysicalValueType* iso2PhysicalValueType);
static int decode_iso2SystemStatusReqType(bitstream_t* stream, struct iso2SystemStatusReqType* iso2SystemStatusReqType);
static int decode_iso2SystemStatusResType(bitstream_t* stream, struct iso2SystemStatusResType* iso2SystemStatusResType);
static int decode_iso2EVSEFinePositioningSetupParametersType(bitstream_t* stream, struct iso2EVSEFinePositioningSetupParametersType* iso2EVSEFinePositioningSetupParametersType);
static int decode_iso2V2GResponseType(bitstream_t* stream, struct iso2V2GResponseType* iso2V2GResponseType);
static int decode_iso2BodyType(bitstream_t* stream, struct iso2BodyType* iso2BodyType);
static int decode_iso2PreChargeResType(bitstream_t* stream, struct iso2PreChargeResType* iso2PreChargeResType);
static int decode_iso2EVSEFinePositioningParametersType(bitstream_t* stream, struct iso2EVSEFinePositioningParametersType* iso2EVSEFinePositioningParametersType);
static int decode_iso2PaymentServiceSelectionResType(bitstream_t* stream, struct iso2PaymentServiceSelectionResType* iso2PaymentServiceSelectionResType);
static int decode_iso2DigestMethodType(bitstream_t* stream, struct iso2DigestMethodType* iso2DigestMethodType);
static int decode_iso2TargetPositionType(bitstream_t* stream, struct iso2TargetPositionType* iso2TargetPositionType);
static int decode_iso2LFA_EVFinePositioningParametersType(bitstream_t* stream, struct iso2LFA_EVFinePositioningParametersType* iso2LFA_EVFinePositioningParametersType);
static int decode_iso2DC_EVChargeParameterType(bitstream_t* stream, struct iso2DC_EVChargeParameterType* iso2DC_EVChargeParameterType);
static int decode_iso2ServiceDetailReqType(bitstream_t* stream, struct iso2ServiceDetailReqType* iso2ServiceDetailReqType);
static int decode_iso2PreChargeReqType(bitstream_t* stream, struct iso2PreChargeReqType* iso2PreChargeReqType);
static int decode_iso2ManifestType(bitstream_t* stream, struct iso2ManifestType* iso2ManifestType);
static int decode_iso2AnonType_V2G_Message(bitstream_t* stream, struct iso2AnonType_V2G_Message* iso2AnonType_V2G_Message);
static int decode_iso2SelectedServiceListType(bitstream_t* stream, struct iso2SelectedServiceListType* iso2SelectedServiceListType);
static int decode_iso2Generic_EVSEFinePositioningParametersType(bitstream_t* stream, struct iso2Generic_EVSEFinePositioningParametersType* iso2Generic_EVSEFinePositioningParametersType);
static int decode_iso2CartesianCoordinatesType(bitstream_t* stream, struct iso2CartesianCoordinatesType* iso2CartesianCoordinatesType);
static int decode_iso2KeyInfoType(bitstream_t* stream, struct iso2KeyInfoType* iso2KeyInfoType);
static int decode_iso2SubCertificatesType(bitstream_t* stream, struct iso2SubCertificatesType* iso2SubCertificatesType);
static int decode_iso2ListOfRootCertificateIDsType(bitstream_t* stream, struct iso2ListOfRootCertificateIDsType* iso2ListOfRootCertificateIDsType);
static int decode_iso2EVEnergyTransferParameterType(bitstream_t* stream, struct iso2EVEnergyTransferParameterType* iso2EVEnergyTransferParameterType);
static int decode_iso2ContractSignatureEncryptedPrivateKeyType(bitstream_t* stream, struct iso2ContractSignatureEncryptedPrivateKeyType* iso2ContractSignatureEncryptedPrivateKeyType);
static int decode_iso2MagneticVectorSetupListType(bitstream_t* stream, struct iso2MagneticVectorSetupListType* iso2MagneticVectorSetupListType);
static int decode_iso2PairingReqType(bitstream_t* stream, struct iso2PairingReqType* iso2PairingReqType);
static int decode_iso2CurrentDemandResType(bitstream_t* stream, struct iso2CurrentDemandResType* iso2CurrentDemandResType);
static int decode_iso2X509IssuerSerialType(bitstream_t* stream, struct iso2X509IssuerSerialType* iso2X509IssuerSerialType);
static int decode_iso2ChargingStatusReqType(bitstream_t* stream, struct iso2ChargingStatusReqType* iso2ChargingStatusReqType);
static int decode_iso2CertificateInstallationResType(bitstream_t* stream, struct iso2CertificateInstallationResType* iso2CertificateInstallationResType);
static int decode_iso2SensorPackageType(bitstream_t* stream, struct iso2SensorPackageType* iso2SensorPackageType);
static int decode_iso2PGPDataType(bitstream_t* stream, struct iso2PGPDataType* iso2PGPDataType);
static int decode_iso2ServiceDiscoveryResType(bitstream_t* stream, struct iso2ServiceDiscoveryResType* iso2ServiceDiscoveryResType);
static int decode_iso2ServiceIDListType(bitstream_t* stream, struct iso2ServiceIDListType* iso2ServiceIDListType);
static int decode_iso2EVFinePositioningSetupParametersType(bitstream_t* stream, struct iso2EVFinePositioningSetupParametersType* iso2EVFinePositioningSetupParametersType);
static int decode_iso2ChargeParameterDiscoveryResType(bitstream_t* stream, struct iso2ChargeParameterDiscoveryResType* iso2ChargeParameterDiscoveryResType);
static int decode_iso2PowerDemandResType(bitstream_t* stream, struct iso2PowerDemandResType* iso2PowerDemandResType);
static int decode_iso2ChargingProfileType(bitstream_t* stream, struct iso2ChargingProfileType* iso2ChargingProfileType);
static int decode_iso2FinePositioningReqType(bitstream_t* stream, struct iso2FinePositioningReqType* iso2FinePositioningReqType);
static int decode_iso2SalesTariffType(bitstream_t* stream, struct iso2SalesTariffType* iso2SalesTariffType);
static int decode_iso2SensorType(bitstream_t* stream, struct iso2SensorType* iso2SensorType);
static int decode_iso2SignatureValueType(bitstream_t* stream, struct iso2SignatureValueType* iso2SignatureValueType);
static int decode_iso2SignedInfoType(bitstream_t* stream, struct iso2SignedInfoType* iso2SignedInfoType);
static int decode_iso2PowerDeliveryResType(bitstream_t* stream, struct iso2PowerDeliveryResType* iso2PowerDeliveryResType);
static int decode_iso2CableCheckReqType(bitstream_t* stream, struct iso2CableCheckReqType* iso2CableCheckReqType);
static int decode_iso2SelectedServiceType(bitstream_t* stream, struct iso2SelectedServiceType* iso2SelectedServiceType);
static int decode_iso2DiffieHellmanPublickeyType(bitstream_t* stream, struct iso2DiffieHellmanPublickeyType* iso2DiffieHellmanPublickeyType);
static int decode_iso2EVSEStatusType(bitstream_t* stream, struct iso2EVSEStatusType* iso2EVSEStatusType);

/* Deviant data decoding (skip functions) */



/* Complex type name='http://www.w3.org/2000/09/xmldsig#,RetrievalMethodType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("http://www.w3.org/2000/09/xmldsig#":Transforms{0-1})',  derivedBy='RESTRICTION'.  */
static int decode_iso2RetrievalMethodType(bitstream_t* stream, struct iso2RetrievalMethodType* iso2RetrievalMethodType) {
	int grammarID = 0;
	int done = 0;
	
	init_iso2RetrievalMethodType(iso2RetrievalMethodType);
	
	while(!done) {
		switch(grammarID) {
		case 0:
			/* FirstStartTag[ATTRIBUTE[STRING](Type), ATTRIBUTE[STRING](URI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decodeUnsignedInteger16(stream, &iso2RetrievalMethodType->Type.charactersLen);
					if (errn == 0) {
						if (iso2RetrievalMethodType->Type.charactersLen >= 2) {
							iso2RetrievalMethodType->Type.charactersLen = (uint16_t)(iso2RetrievalMethodType->Type.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2RetrievalMethodType->Type.charactersLen, iso2RetrievalMethodType->Type.characters, iso2RetrievalMethodType_Type_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					iso2RetrievalMethodType->Type_isUsed = 1u;
					grammarID = 1;
					break;
				case 1:
					errn = decodeUnsignedInteger16(stream, &iso2RetrievalMethodType->URI.charactersLen);
					if (errn == 0) {
						if (iso2RetrievalMethodType->URI.charactersLen >= 2) {
							iso2RetrievalMethodType->URI.charactersLen = (uint16_t)(iso2RetrievalMethodType->URI.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2RetrievalMethodType->URI.charactersLen, iso2RetrievalMethodType->URI.characters, iso2RetrievalMethodType_URI_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					iso2RetrievalMethodType->URI_isUsed = 1u;
					grammarID = 2;
					break;
				case 2:
					errn = decode_iso2TransformsType(stream, &iso2RetrievalMethodType->Transforms);
					iso2RetrievalMethodType->Transforms_isUsed = 1u;
					grammarID = 3;
					break;
				case 3:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1:
			/* StartTag[ATTRIBUTE[STRING](URI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decodeUnsignedInteger16(stream, &iso2RetrievalMethodType->URI.charactersLen);
					if (errn == 0) {
						if (iso2RetrievalMethodType->URI.charactersLen >= 2) {
							iso2RetrievalMethodType->URI.charactersLen = (uint16_t)(iso2RetrievalMethodType->URI.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2RetrievalMethodType->URI.charactersLen, iso2RetrievalMethodType->URI.characters, iso2RetrievalMethodType_URI_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					iso2RetrievalMethodType->URI_isUsed = 1u;
					grammarID = 2;
					break;
				case 1:
					errn = decode_iso2TransformsType(stream, &iso2RetrievalMethodType->Transforms);
					iso2RetrievalMethodType->Transforms_isUsed = 1u;
					grammarID = 3;
					break;
				case 2:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2:
			/* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2TransformsType(stream, &iso2RetrievalMethodType->Transforms);
					iso2RetrievalMethodType->Transforms_isUsed = 1u;
					grammarID = 3;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,AuthorizationResType',  base type name='V2GResponseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(("urn:iso:15118:2:2016:MsgBody":ResponseCode,"urn:iso:15118:2:2016:MsgBody":EVSEStatus{0-1}),("urn:iso:15118:2:2016:MsgBody":EVSEProcessing))',  derivedBy='EXTENSION'.  */
static int decode_iso2AuthorizationResType(bitstream_t* stream, struct iso2AuthorizationResType* iso2AuthorizationResType) {
	int grammarID = 5;
	int done = 0;
	
	init_iso2AuthorizationResType(iso2AuthorizationResType);
	
	while(!done) {
		switch(grammarID) {
		case 5:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 5, &uint32);
							iso2AuthorizationResType->ResponseCode = (iso2responseCodeType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 6;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 6:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEProcessing)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2EVSEStatusType(stream, &iso2AuthorizationResType->EVSEStatus);
					iso2AuthorizationResType->EVSEStatus_isUsed = 1u;
					grammarID = 7;
					break;
				case 1:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
							iso2AuthorizationResType->EVSEProcessing = (iso2EVSEProcessingType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEProcessing) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 7:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEProcessing)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
							iso2AuthorizationResType->EVSEProcessing = (iso2EVSEProcessingType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEProcessing) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,MV_EVSEFinePositioningSetupParametersType',  base type name='EVSEFinePositioningSetupParametersType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgDataTypes":FrequencyChannel{0-1},"urn:iso:15118:2:2016:MsgDataTypes":MagneticVectorSetupList{0-1})',  derivedBy='EXTENSION'.  */
static int decode_iso2MV_EVSEFinePositioningSetupParametersType(bitstream_t* stream, struct iso2MV_EVSEFinePositioningSetupParametersType* iso2MV_EVSEFinePositioningSetupParametersType) {
	int grammarID = 8;
	int done = 0;
	
	init_iso2MV_EVSEFinePositioningSetupParametersType(iso2MV_EVSEFinePositioningSetupParametersType);
	
	while(!done) {
		switch(grammarID) {
		case 8:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}FrequencyChannel), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetupList), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger32(stream, &iso2MV_EVSEFinePositioningSetupParametersType->FrequencyChannel);
							iso2MV_EVSEFinePositioningSetupParametersType->FrequencyChannel_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}FrequencyChannel) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 9;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					errn = decode_iso2MagneticVectorSetupListType(stream, &iso2MV_EVSEFinePositioningSetupParametersType->MagneticVectorSetupList);
					iso2MV_EVSEFinePositioningSetupParametersType->MagneticVectorSetupList_isUsed = 1u;
					grammarID = 3;
					break;
				case 2:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 9:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetupList), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2MagneticVectorSetupListType(stream, &iso2MV_EVSEFinePositioningSetupParametersType->MagneticVectorSetupList);
					iso2MV_EVSEFinePositioningSetupParametersType->MagneticVectorSetupList_isUsed = 1u;
					grammarID = 3;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='http://www.w3.org/2000/09/xmldsig#,X509DataType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(("http://www.w3.org/2000/09/xmldsig#":X509IssuerSerial|"http://www.w3.org/2000/09/xmldsig#":X509SKI|"http://www.w3.org/2000/09/xmldsig#":X509SubjectName|"http://www.w3.org/2000/09/xmldsig#":X509Certificate|"http://www.w3.org/2000/09/xmldsig#":X509CRL|(WC[##other:"http://www.w3.org/2000/09/xmldsig#"]))){1-UNBOUNDED}',  derivedBy='RESTRICTION'.  */
static int decode_iso2X509DataType(bitstream_t* stream, struct iso2X509DataType* iso2X509DataType) {
	int grammarID = 10;
	int done = 0;
	
	init_iso2X509DataType(iso2X509DataType);
	
	while(!done) {
		switch(grammarID) {
		case 10:
			/* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT_GENERIC] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2X509DataType->X509IssuerSerial.arrayLen < iso2X509DataType_X509IssuerSerial_ARRAY_SIZE) {
						errn = decode_iso2X509IssuerSerialType(stream, &iso2X509DataType->X509IssuerSerial.array[iso2X509DataType->X509IssuerSerial.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 11;
					break;
				case 1:
					if (iso2X509DataType->X509SKI.arrayLen < iso2X509DataType_X509SKI_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2X509DataType->X509SKI.array[iso2X509DataType->X509SKI.arrayLen].bytesLen);
								if (errn == 0) {
									errn =  (iso2X509DataType->X509SKI.array[iso2X509DataType->X509SKI.arrayLen].bytesLen) <= iso2X509DataType_X509SKI_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
								}
								if (errn == 0) {
									errn = decodeBytes(stream, iso2X509DataType->X509SKI.array[iso2X509DataType->X509SKI.arrayLen].bytesLen, iso2X509DataType->X509SKI.array[iso2X509DataType->X509SKI.arrayLen].bytes);
								}
								iso2X509DataType->X509SKI.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 11;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 2:
					if (iso2X509DataType->X509SubjectName.arrayLen < iso2X509DataType_X509SubjectName_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[STRING]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2X509DataType->X509SubjectName.array[iso2X509DataType->X509SubjectName.arrayLen].charactersLen);
								if (errn == 0) {
									if (iso2X509DataType->X509SubjectName.array[iso2X509DataType->X509SubjectName.arrayLen].charactersLen >= 2) {
										iso2X509DataType->X509SubjectName.array[iso2X509DataType->X509SubjectName.arrayLen].charactersLen = (uint16_t)(iso2X509DataType->X509SubjectName.array[iso2X509DataType->X509SubjectName.arrayLen].charactersLen - 2); /* string table miss */
										errn = decodeCharacters(stream, iso2X509DataType->X509SubjectName.array[iso2X509DataType->X509SubjectName.arrayLen].charactersLen, iso2X509DataType->X509SubjectName.array[iso2X509DataType->X509SubjectName.arrayLen].characters, iso2X509DataType_X509SubjectName_CHARACTERS_SIZE);
									} else {
										/* string table hit */
										errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
									}
								}
								iso2X509DataType->X509SubjectName.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 11;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 3:
					if (iso2X509DataType->X509Certificate.arrayLen < iso2X509DataType_X509Certificate_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2X509DataType->X509Certificate.array[iso2X509DataType->X509Certificate.arrayLen].bytesLen);
								if (errn == 0) {
									errn =  (iso2X509DataType->X509Certificate.array[iso2X509DataType->X509Certificate.arrayLen].bytesLen) <= iso2X509DataType_X509Certificate_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
								}
								if (errn == 0) {
									errn = decodeBytes(stream, iso2X509DataType->X509Certificate.array[iso2X509DataType->X509Certificate.arrayLen].bytesLen, iso2X509DataType->X509Certificate.array[iso2X509DataType->X509Certificate.arrayLen].bytes);
								}
								iso2X509DataType->X509Certificate.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 11;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 4:
					if (iso2X509DataType->X509CRL.arrayLen < iso2X509DataType_X509CRL_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2X509DataType->X509CRL.array[iso2X509DataType->X509CRL.arrayLen].bytesLen);
								if (errn == 0) {
									errn =  (iso2X509DataType->X509CRL.array[iso2X509DataType->X509CRL.arrayLen].bytesLen) <= iso2X509DataType_X509CRL_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
								}
								if (errn == 0) {
									errn = decodeBytes(stream, iso2X509DataType->X509CRL.array[iso2X509DataType->X509CRL.arrayLen].bytesLen, iso2X509DataType->X509CRL.array[iso2X509DataType->X509CRL.arrayLen].bytes);
								}
								iso2X509DataType->X509CRL.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 11;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 5:
					errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					/* TODO unsupported event : START_ELEMENT_GENERIC */
					grammarID = 11;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 11:
			/* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT_GENERIC, END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2X509DataType->X509IssuerSerial.arrayLen < iso2X509DataType_X509IssuerSerial_ARRAY_SIZE) {
						errn = decode_iso2X509IssuerSerialType(stream, &iso2X509DataType->X509IssuerSerial.array[iso2X509DataType->X509IssuerSerial.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 11;
					break;
				case 1:
					if (iso2X509DataType->X509SKI.arrayLen < iso2X509DataType_X509SKI_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2X509DataType->X509SKI.array[iso2X509DataType->X509SKI.arrayLen].bytesLen);
								if (errn == 0) {
									errn =  (iso2X509DataType->X509SKI.array[iso2X509DataType->X509SKI.arrayLen].bytesLen) <= iso2X509DataType_X509SKI_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
								}
								if (errn == 0) {
									errn = decodeBytes(stream, iso2X509DataType->X509SKI.array[iso2X509DataType->X509SKI.arrayLen].bytesLen, iso2X509DataType->X509SKI.array[iso2X509DataType->X509SKI.arrayLen].bytes);
								}
								iso2X509DataType->X509SKI.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 11;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 2:
					if (iso2X509DataType->X509SubjectName.arrayLen < iso2X509DataType_X509SubjectName_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[STRING]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2X509DataType->X509SubjectName.array[iso2X509DataType->X509SubjectName.arrayLen].charactersLen);
								if (errn == 0) {
									if (iso2X509DataType->X509SubjectName.array[iso2X509DataType->X509SubjectName.arrayLen].charactersLen >= 2) {
										iso2X509DataType->X509SubjectName.array[iso2X509DataType->X509SubjectName.arrayLen].charactersLen = (uint16_t)(iso2X509DataType->X509SubjectName.array[iso2X509DataType->X509SubjectName.arrayLen].charactersLen - 2); /* string table miss */
										errn = decodeCharacters(stream, iso2X509DataType->X509SubjectName.array[iso2X509DataType->X509SubjectName.arrayLen].charactersLen, iso2X509DataType->X509SubjectName.array[iso2X509DataType->X509SubjectName.arrayLen].characters, iso2X509DataType_X509SubjectName_CHARACTERS_SIZE);
									} else {
										/* string table hit */
										errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
									}
								}
								iso2X509DataType->X509SubjectName.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 11;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 3:
					if (iso2X509DataType->X509Certificate.arrayLen < iso2X509DataType_X509Certificate_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2X509DataType->X509Certificate.array[iso2X509DataType->X509Certificate.arrayLen].bytesLen);
								if (errn == 0) {
									errn =  (iso2X509DataType->X509Certificate.array[iso2X509DataType->X509Certificate.arrayLen].bytesLen) <= iso2X509DataType_X509Certificate_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
								}
								if (errn == 0) {
									errn = decodeBytes(stream, iso2X509DataType->X509Certificate.array[iso2X509DataType->X509Certificate.arrayLen].bytesLen, iso2X509DataType->X509Certificate.array[iso2X509DataType->X509Certificate.arrayLen].bytes);
								}
								iso2X509DataType->X509Certificate.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 11;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 4:
					if (iso2X509DataType->X509CRL.arrayLen < iso2X509DataType_X509CRL_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2X509DataType->X509CRL.array[iso2X509DataType->X509CRL.arrayLen].bytesLen);
								if (errn == 0) {
									errn =  (iso2X509DataType->X509CRL.array[iso2X509DataType->X509CRL.arrayLen].bytesLen) <= iso2X509DataType_X509CRL_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
								}
								if (errn == 0) {
									errn = decodeBytes(stream, iso2X509DataType->X509CRL.array[iso2X509DataType->X509CRL.arrayLen].bytesLen, iso2X509DataType->X509CRL.array[iso2X509DataType->X509CRL.arrayLen].bytes);
								}
								iso2X509DataType->X509CRL.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 11;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 5:
					errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					/* TODO unsupported event : START_ELEMENT_GENERIC */
					grammarID = 11;
					break;
				case 6:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='http://www.w3.org/2000/09/xmldsig#,RSAKeyValueType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("http://www.w3.org/2000/09/xmldsig#":Modulus,"http://www.w3.org/2000/09/xmldsig#":Exponent)',  derivedBy='RESTRICTION'.  */
static int decode_iso2RSAKeyValueType(bitstream_t* stream, struct iso2RSAKeyValueType* iso2RSAKeyValueType) {
	int grammarID = 12;
	int done = 0;
	
	init_iso2RSAKeyValueType(iso2RSAKeyValueType);
	
	while(!done) {
		switch(grammarID) {
		case 12:
			/* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Modulus)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2RSAKeyValueType->Modulus.bytesLen);
							if (errn == 0) {
								errn =  (iso2RSAKeyValueType->Modulus.bytesLen) <= iso2RSAKeyValueType_Modulus_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
							}
							if (errn == 0) {
								errn = decodeBytes(stream, iso2RSAKeyValueType->Modulus.bytesLen, iso2RSAKeyValueType->Modulus.bytes);
							}
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Modulus) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 13;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 13:
			/* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Exponent)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2RSAKeyValueType->Exponent.bytesLen);
							if (errn == 0) {
								errn =  (iso2RSAKeyValueType->Exponent.bytesLen) <= iso2RSAKeyValueType_Exponent_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
							}
							if (errn == 0) {
								errn = decodeBytes(stream, iso2RSAKeyValueType->Exponent.bytesLen, iso2RSAKeyValueType->Exponent.bytes);
							}
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Exponent) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,DC_BidirectionalControlResType',  base type name='V2GResponseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(("urn:iso:15118:2:2016:MsgBody":ResponseCode,"urn:iso:15118:2:2016:MsgBody":EVSEStatus{0-1}),("urn:iso:15118:2:2016:MsgBody":EVSEPresentCurrent,"urn:iso:15118:2:2016:MsgBody":EVSEPresentVoltage,"urn:iso:15118:2:2016:MsgBody":EVSEPowerLimitAchieved,"urn:iso:15118:2:2016:MsgBody":EVSECurrentLimitAchieved,"urn:iso:15118:2:2016:MsgBody":EVSEVoltageLimitAchieved,"urn:iso:15118:2:2016:MsgBody":EVSEMaximumChargePower{0-1},"urn:iso:15118:2:2016:MsgBody":EVSEMaximumDischargePower{0-1},"urn:iso:15118:2:2016:MsgBody":EVSEMaximumChargeCurrent{0-1},"urn:iso:15118:2:2016:MsgBody":EVSEMaximumDischargeCurrent{0-1},"urn:iso:15118:2:2016:MsgBody":EVSEMaximumVoltage{0-1},"urn:iso:15118:2:2016:MsgBody":EVSEMinimumVoltage{0-1},"urn:iso:15118:2:2016:MsgBody":EVSEID,"urn:iso:15118:2:2016:MsgBody":SAScheduleTupleID{0-1},"urn:iso:15118:2:2016:MsgBody":MeterInfo{0-1},"urn:iso:15118:2:2016:MsgBody":ReceiptRequired{0-1}))',  derivedBy='EXTENSION'.  */
static int decode_iso2DC_BidirectionalControlResType(bitstream_t* stream, struct iso2DC_BidirectionalControlResType* iso2DC_BidirectionalControlResType) {
	int grammarID = 14;
	int done = 0;
	
	init_iso2DC_BidirectionalControlResType(iso2DC_BidirectionalControlResType);
	
	while(!done) {
		switch(grammarID) {
		case 14:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 5, &uint32);
							iso2DC_BidirectionalControlResType->ResponseCode = (iso2responseCodeType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 15;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 15:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEPresentCurrent)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2EVSEStatusType(stream, &iso2DC_BidirectionalControlResType->EVSEStatus);
					iso2DC_BidirectionalControlResType->EVSEStatus_isUsed = 1u;
					grammarID = 16;
					break;
				case 1:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_BidirectionalControlResType->EVSEPresentCurrent);
					grammarID = 17;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 16:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEPresentCurrent)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_BidirectionalControlResType->EVSEPresentCurrent);
					grammarID = 17;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 17:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEPresentVoltage)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_BidirectionalControlResType->EVSEPresentVoltage);
					grammarID = 18;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 18:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEPowerLimitAchieved)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[BOOLEAN]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeBoolean(stream, &iso2DC_BidirectionalControlResType->EVSEPowerLimitAchieved);
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEPowerLimitAchieved) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 19;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 19:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSECurrentLimitAchieved)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[BOOLEAN]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeBoolean(stream, &iso2DC_BidirectionalControlResType->EVSECurrentLimitAchieved);
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSECurrentLimitAchieved) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 20;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 20:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEVoltageLimitAchieved)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[BOOLEAN]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeBoolean(stream, &iso2DC_BidirectionalControlResType->EVSEVoltageLimitAchieved);
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEVoltageLimitAchieved) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 21;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 21:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEMaximumChargePower), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEMaximumDischargePower), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEMaximumChargeCurrent), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEMaximumDischargeCurrent), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEMaximumVoltage), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEMinimumVoltage), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEID)] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_BidirectionalControlResType->EVSEMaximumChargePower);
					iso2DC_BidirectionalControlResType->EVSEMaximumChargePower_isUsed = 1u;
					grammarID = 22;
					break;
				case 1:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_BidirectionalControlResType->EVSEMaximumDischargePower);
					iso2DC_BidirectionalControlResType->EVSEMaximumDischargePower_isUsed = 1u;
					grammarID = 23;
					break;
				case 2:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_BidirectionalControlResType->EVSEMaximumChargeCurrent);
					iso2DC_BidirectionalControlResType->EVSEMaximumChargeCurrent_isUsed = 1u;
					grammarID = 24;
					break;
				case 3:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_BidirectionalControlResType->EVSEMaximumDischargeCurrent);
					iso2DC_BidirectionalControlResType->EVSEMaximumDischargeCurrent_isUsed = 1u;
					grammarID = 25;
					break;
				case 4:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_BidirectionalControlResType->EVSEMaximumVoltage);
					iso2DC_BidirectionalControlResType->EVSEMaximumVoltage_isUsed = 1u;
					grammarID = 26;
					break;
				case 5:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_BidirectionalControlResType->EVSEMinimumVoltage);
					iso2DC_BidirectionalControlResType->EVSEMinimumVoltage_isUsed = 1u;
					grammarID = 27;
					break;
				case 6:
					/* FirstStartTag[CHARACTERS[STRING]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2DC_BidirectionalControlResType->EVSEID.charactersLen);
							if (errn == 0) {
								if (iso2DC_BidirectionalControlResType->EVSEID.charactersLen >= 2) {
									iso2DC_BidirectionalControlResType->EVSEID.charactersLen = (uint16_t)(iso2DC_BidirectionalControlResType->EVSEID.charactersLen - 2); /* string table miss */
									errn = decodeCharacters(stream, iso2DC_BidirectionalControlResType->EVSEID.charactersLen, iso2DC_BidirectionalControlResType->EVSEID.characters, iso2DC_BidirectionalControlResType_EVSEID_CHARACTERS_SIZE);
								} else {
									/* string table hit */
									errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
								}
							}
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEID) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 28;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 22:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEMaximumDischargePower), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEMaximumChargeCurrent), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEMaximumDischargeCurrent), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEMaximumVoltage), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEMinimumVoltage), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEID)] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_BidirectionalControlResType->EVSEMaximumDischargePower);
					iso2DC_BidirectionalControlResType->EVSEMaximumDischargePower_isUsed = 1u;
					grammarID = 23;
					break;
				case 1:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_BidirectionalControlResType->EVSEMaximumChargeCurrent);
					iso2DC_BidirectionalControlResType->EVSEMaximumChargeCurrent_isUsed = 1u;
					grammarID = 24;
					break;
				case 2:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_BidirectionalControlResType->EVSEMaximumDischargeCurrent);
					iso2DC_BidirectionalControlResType->EVSEMaximumDischargeCurrent_isUsed = 1u;
					grammarID = 25;
					break;
				case 3:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_BidirectionalControlResType->EVSEMaximumVoltage);
					iso2DC_BidirectionalControlResType->EVSEMaximumVoltage_isUsed = 1u;
					grammarID = 26;
					break;
				case 4:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_BidirectionalControlResType->EVSEMinimumVoltage);
					iso2DC_BidirectionalControlResType->EVSEMinimumVoltage_isUsed = 1u;
					grammarID = 27;
					break;
				case 5:
					/* FirstStartTag[CHARACTERS[STRING]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2DC_BidirectionalControlResType->EVSEID.charactersLen);
							if (errn == 0) {
								if (iso2DC_BidirectionalControlResType->EVSEID.charactersLen >= 2) {
									iso2DC_BidirectionalControlResType->EVSEID.charactersLen = (uint16_t)(iso2DC_BidirectionalControlResType->EVSEID.charactersLen - 2); /* string table miss */
									errn = decodeCharacters(stream, iso2DC_BidirectionalControlResType->EVSEID.charactersLen, iso2DC_BidirectionalControlResType->EVSEID.characters, iso2DC_BidirectionalControlResType_EVSEID_CHARACTERS_SIZE);
								} else {
									/* string table hit */
									errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
								}
							}
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEID) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 28;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 23:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEMaximumChargeCurrent), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEMaximumDischargeCurrent), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEMaximumVoltage), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEMinimumVoltage), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEID)] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_BidirectionalControlResType->EVSEMaximumChargeCurrent);
					iso2DC_BidirectionalControlResType->EVSEMaximumChargeCurrent_isUsed = 1u;
					grammarID = 24;
					break;
				case 1:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_BidirectionalControlResType->EVSEMaximumDischargeCurrent);
					iso2DC_BidirectionalControlResType->EVSEMaximumDischargeCurrent_isUsed = 1u;
					grammarID = 25;
					break;
				case 2:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_BidirectionalControlResType->EVSEMaximumVoltage);
					iso2DC_BidirectionalControlResType->EVSEMaximumVoltage_isUsed = 1u;
					grammarID = 26;
					break;
				case 3:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_BidirectionalControlResType->EVSEMinimumVoltage);
					iso2DC_BidirectionalControlResType->EVSEMinimumVoltage_isUsed = 1u;
					grammarID = 27;
					break;
				case 4:
					/* FirstStartTag[CHARACTERS[STRING]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2DC_BidirectionalControlResType->EVSEID.charactersLen);
							if (errn == 0) {
								if (iso2DC_BidirectionalControlResType->EVSEID.charactersLen >= 2) {
									iso2DC_BidirectionalControlResType->EVSEID.charactersLen = (uint16_t)(iso2DC_BidirectionalControlResType->EVSEID.charactersLen - 2); /* string table miss */
									errn = decodeCharacters(stream, iso2DC_BidirectionalControlResType->EVSEID.charactersLen, iso2DC_BidirectionalControlResType->EVSEID.characters, iso2DC_BidirectionalControlResType_EVSEID_CHARACTERS_SIZE);
								} else {
									/* string table hit */
									errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
								}
							}
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEID) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 28;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 24:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEMaximumDischargeCurrent), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEMaximumVoltage), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEMinimumVoltage), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEID)] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_BidirectionalControlResType->EVSEMaximumDischargeCurrent);
					iso2DC_BidirectionalControlResType->EVSEMaximumDischargeCurrent_isUsed = 1u;
					grammarID = 25;
					break;
				case 1:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_BidirectionalControlResType->EVSEMaximumVoltage);
					iso2DC_BidirectionalControlResType->EVSEMaximumVoltage_isUsed = 1u;
					grammarID = 26;
					break;
				case 2:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_BidirectionalControlResType->EVSEMinimumVoltage);
					iso2DC_BidirectionalControlResType->EVSEMinimumVoltage_isUsed = 1u;
					grammarID = 27;
					break;
				case 3:
					/* FirstStartTag[CHARACTERS[STRING]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2DC_BidirectionalControlResType->EVSEID.charactersLen);
							if (errn == 0) {
								if (iso2DC_BidirectionalControlResType->EVSEID.charactersLen >= 2) {
									iso2DC_BidirectionalControlResType->EVSEID.charactersLen = (uint16_t)(iso2DC_BidirectionalControlResType->EVSEID.charactersLen - 2); /* string table miss */
									errn = decodeCharacters(stream, iso2DC_BidirectionalControlResType->EVSEID.charactersLen, iso2DC_BidirectionalControlResType->EVSEID.characters, iso2DC_BidirectionalControlResType_EVSEID_CHARACTERS_SIZE);
								} else {
									/* string table hit */
									errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
								}
							}
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEID) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 28;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 25:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEMaximumVoltage), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEMinimumVoltage), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEID)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_BidirectionalControlResType->EVSEMaximumVoltage);
					iso2DC_BidirectionalControlResType->EVSEMaximumVoltage_isUsed = 1u;
					grammarID = 26;
					break;
				case 1:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_BidirectionalControlResType->EVSEMinimumVoltage);
					iso2DC_BidirectionalControlResType->EVSEMinimumVoltage_isUsed = 1u;
					grammarID = 27;
					break;
				case 2:
					/* FirstStartTag[CHARACTERS[STRING]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2DC_BidirectionalControlResType->EVSEID.charactersLen);
							if (errn == 0) {
								if (iso2DC_BidirectionalControlResType->EVSEID.charactersLen >= 2) {
									iso2DC_BidirectionalControlResType->EVSEID.charactersLen = (uint16_t)(iso2DC_BidirectionalControlResType->EVSEID.charactersLen - 2); /* string table miss */
									errn = decodeCharacters(stream, iso2DC_BidirectionalControlResType->EVSEID.charactersLen, iso2DC_BidirectionalControlResType->EVSEID.characters, iso2DC_BidirectionalControlResType_EVSEID_CHARACTERS_SIZE);
								} else {
									/* string table hit */
									errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
								}
							}
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEID) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 28;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 26:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEMinimumVoltage), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEID)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_BidirectionalControlResType->EVSEMinimumVoltage);
					iso2DC_BidirectionalControlResType->EVSEMinimumVoltage_isUsed = 1u;
					grammarID = 27;
					break;
				case 1:
					/* FirstStartTag[CHARACTERS[STRING]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2DC_BidirectionalControlResType->EVSEID.charactersLen);
							if (errn == 0) {
								if (iso2DC_BidirectionalControlResType->EVSEID.charactersLen >= 2) {
									iso2DC_BidirectionalControlResType->EVSEID.charactersLen = (uint16_t)(iso2DC_BidirectionalControlResType->EVSEID.charactersLen - 2); /* string table miss */
									errn = decodeCharacters(stream, iso2DC_BidirectionalControlResType->EVSEID.charactersLen, iso2DC_BidirectionalControlResType->EVSEID.characters, iso2DC_BidirectionalControlResType_EVSEID_CHARACTERS_SIZE);
								} else {
									/* string table hit */
									errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
								}
							}
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEID) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 28;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 27:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEID)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[STRING]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2DC_BidirectionalControlResType->EVSEID.charactersLen);
							if (errn == 0) {
								if (iso2DC_BidirectionalControlResType->EVSEID.charactersLen >= 2) {
									iso2DC_BidirectionalControlResType->EVSEID.charactersLen = (uint16_t)(iso2DC_BidirectionalControlResType->EVSEID.charactersLen - 2); /* string table miss */
									errn = decodeCharacters(stream, iso2DC_BidirectionalControlResType->EVSEID.charactersLen, iso2DC_BidirectionalControlResType->EVSEID.characters, iso2DC_BidirectionalControlResType_EVSEID_CHARACTERS_SIZE);
								} else {
									/* string table hit */
									errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
								}
							}
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEID) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 28;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 28:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ReceiptRequired), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
							iso2DC_BidirectionalControlResType->SAScheduleTupleID = (uint8_t)(uint32 + 1);
							iso2DC_BidirectionalControlResType->SAScheduleTupleID_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SAScheduleTupleID) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 29;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					errn = decode_iso2MeterInfoType(stream, &iso2DC_BidirectionalControlResType->MeterInfo);
					iso2DC_BidirectionalControlResType->MeterInfo_isUsed = 1u;
					grammarID = 30;
					break;
				case 2:
					/* FirstStartTag[CHARACTERS[BOOLEAN]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeBoolean(stream, &iso2DC_BidirectionalControlResType->ReceiptRequired);
							iso2DC_BidirectionalControlResType->ReceiptRequired_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ReceiptRequired) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 3:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 29:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ReceiptRequired), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2MeterInfoType(stream, &iso2DC_BidirectionalControlResType->MeterInfo);
					iso2DC_BidirectionalControlResType->MeterInfo_isUsed = 1u;
					grammarID = 30;
					break;
				case 1:
					/* FirstStartTag[CHARACTERS[BOOLEAN]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeBoolean(stream, &iso2DC_BidirectionalControlResType->ReceiptRequired);
							iso2DC_BidirectionalControlResType->ReceiptRequired_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ReceiptRequired) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 2:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 30:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ReceiptRequired), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[BOOLEAN]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeBoolean(stream, &iso2DC_BidirectionalControlResType->ReceiptRequired);
							iso2DC_BidirectionalControlResType->ReceiptRequired_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ReceiptRequired) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,CostType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgDataTypes":costKind,"urn:iso:15118:2:2016:MsgDataTypes":amount)',  derivedBy='RESTRICTION'.  */
static int decode_iso2CostType(bitstream_t* stream, struct iso2CostType* iso2CostType) {
	int grammarID = 31;
	int done = 0;
	
	init_iso2CostType(iso2CostType);
	
	while(!done) {
		switch(grammarID) {
		case 31:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}costKind)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
							iso2CostType->costKind = (iso2costKindType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}costKind) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 32;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 32:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}amount)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2CostType->amount);
					grammarID = 3;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,ChargingStatusResType',  base type name='V2GResponseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(("urn:iso:15118:2:2016:MsgBody":ResponseCode,"urn:iso:15118:2:2016:MsgBody":EVSEStatus{0-1}),("urn:iso:15118:2:2016:MsgBody":EVSEID,"urn:iso:15118:2:2016:MsgBody":SAScheduleTupleID{0-1},"urn:iso:15118:2:2016:MsgBody":MeterInfo{0-1},"urn:iso:15118:2:2016:MsgBody":ReceiptRequired{0-1},"urn:iso:15118:2:2016:MsgBody":EVSETargetPower{0-1}))',  derivedBy='EXTENSION'.  */
static int decode_iso2ChargingStatusResType(bitstream_t* stream, struct iso2ChargingStatusResType* iso2ChargingStatusResType) {
	int grammarID = 33;
	int done = 0;
	
	init_iso2ChargingStatusResType(iso2ChargingStatusResType);
	
	while(!done) {
		switch(grammarID) {
		case 33:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 5, &uint32);
							iso2ChargingStatusResType->ResponseCode = (iso2responseCodeType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 34;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 34:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEID)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2EVSEStatusType(stream, &iso2ChargingStatusResType->EVSEStatus);
					iso2ChargingStatusResType->EVSEStatus_isUsed = 1u;
					grammarID = 35;
					break;
				case 1:
					/* FirstStartTag[CHARACTERS[STRING]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2ChargingStatusResType->EVSEID.charactersLen);
							if (errn == 0) {
								if (iso2ChargingStatusResType->EVSEID.charactersLen >= 2) {
									iso2ChargingStatusResType->EVSEID.charactersLen = (uint16_t)(iso2ChargingStatusResType->EVSEID.charactersLen - 2); /* string table miss */
									errn = decodeCharacters(stream, iso2ChargingStatusResType->EVSEID.charactersLen, iso2ChargingStatusResType->EVSEID.characters, iso2ChargingStatusResType_EVSEID_CHARACTERS_SIZE);
								} else {
									/* string table hit */
									errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
								}
							}
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEID) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 36;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 35:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEID)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[STRING]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2ChargingStatusResType->EVSEID.charactersLen);
							if (errn == 0) {
								if (iso2ChargingStatusResType->EVSEID.charactersLen >= 2) {
									iso2ChargingStatusResType->EVSEID.charactersLen = (uint16_t)(iso2ChargingStatusResType->EVSEID.charactersLen - 2); /* string table miss */
									errn = decodeCharacters(stream, iso2ChargingStatusResType->EVSEID.charactersLen, iso2ChargingStatusResType->EVSEID.characters, iso2ChargingStatusResType_EVSEID_CHARACTERS_SIZE);
								} else {
									/* string table hit */
									errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
								}
							}
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEID) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 36;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 36:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ReceiptRequired), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSETargetPower), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
							iso2ChargingStatusResType->SAScheduleTupleID = (uint8_t)(uint32 + 1);
							iso2ChargingStatusResType->SAScheduleTupleID_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SAScheduleTupleID) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 37;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					errn = decode_iso2MeterInfoType(stream, &iso2ChargingStatusResType->MeterInfo);
					iso2ChargingStatusResType->MeterInfo_isUsed = 1u;
					grammarID = 38;
					break;
				case 2:
					/* FirstStartTag[CHARACTERS[BOOLEAN]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeBoolean(stream, &iso2ChargingStatusResType->ReceiptRequired);
							iso2ChargingStatusResType->ReceiptRequired_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ReceiptRequired) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 39;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 3:
					errn = decode_iso2PhysicalValueType(stream, &iso2ChargingStatusResType->EVSETargetPower);
					iso2ChargingStatusResType->EVSETargetPower_isUsed = 1u;
					grammarID = 3;
					break;
				case 4:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 37:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ReceiptRequired), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSETargetPower), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2MeterInfoType(stream, &iso2ChargingStatusResType->MeterInfo);
					iso2ChargingStatusResType->MeterInfo_isUsed = 1u;
					grammarID = 38;
					break;
				case 1:
					/* FirstStartTag[CHARACTERS[BOOLEAN]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeBoolean(stream, &iso2ChargingStatusResType->ReceiptRequired);
							iso2ChargingStatusResType->ReceiptRequired_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ReceiptRequired) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 39;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 2:
					errn = decode_iso2PhysicalValueType(stream, &iso2ChargingStatusResType->EVSETargetPower);
					iso2ChargingStatusResType->EVSETargetPower_isUsed = 1u;
					grammarID = 3;
					break;
				case 3:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 38:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ReceiptRequired), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSETargetPower), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[BOOLEAN]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeBoolean(stream, &iso2ChargingStatusResType->ReceiptRequired);
							iso2ChargingStatusResType->ReceiptRequired_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ReceiptRequired) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 39;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					errn = decode_iso2PhysicalValueType(stream, &iso2ChargingStatusResType->EVSETargetPower);
					iso2ChargingStatusResType->EVSETargetPower_isUsed = 1u;
					grammarID = 3;
					break;
				case 2:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 39:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSETargetPower), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2ChargingStatusResType->EVSETargetPower);
					iso2ChargingStatusResType->EVSETargetPower_isUsed = 1u;
					grammarID = 3;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,MeterInfoType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgDataTypes":MeterID,"urn:iso:15118:2:2016:MsgDataTypes":MeterReadingCharged{0-1},"urn:iso:15118:2:2016:MsgDataTypes":MeterReadingDischarged{0-1},"urn:iso:15118:2:2016:MsgDataTypes":SigMeterReading{0-1},"urn:iso:15118:2:2016:MsgDataTypes":MeterStatus{0-1},"urn:iso:15118:2:2016:MsgDataTypes":TMeter{0-1})',  derivedBy='RESTRICTION'.  */
static int decode_iso2MeterInfoType(bitstream_t* stream, struct iso2MeterInfoType* iso2MeterInfoType) {
	int grammarID = 40;
	int done = 0;
	
	init_iso2MeterInfoType(iso2MeterInfoType);
	
	while(!done) {
		switch(grammarID) {
		case 40:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeterID)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[STRING]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2MeterInfoType->MeterID.charactersLen);
							if (errn == 0) {
								if (iso2MeterInfoType->MeterID.charactersLen >= 2) {
									iso2MeterInfoType->MeterID.charactersLen = (uint16_t)(iso2MeterInfoType->MeterID.charactersLen - 2); /* string table miss */
									errn = decodeCharacters(stream, iso2MeterInfoType->MeterID.charactersLen, iso2MeterInfoType->MeterID.characters, iso2MeterInfoType_MeterID_CHARACTERS_SIZE);
								} else {
									/* string table hit */
									errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
								}
							}
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeterID) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 41;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 41:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeterReadingCharged), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeterReadingDischarged), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SigMeterReading), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}TMeter), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger64(stream, &iso2MeterInfoType->MeterReadingCharged);
							iso2MeterInfoType->MeterReadingCharged_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeterReadingCharged) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 42;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger64(stream, &iso2MeterInfoType->MeterReadingDischarged);
							iso2MeterInfoType->MeterReadingDischarged_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeterReadingDischarged) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 43;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 2:
					/* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2MeterInfoType->SigMeterReading.bytesLen);
							if (errn == 0) {
								errn =  (iso2MeterInfoType->SigMeterReading.bytesLen) <= iso2MeterInfoType_SigMeterReading_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
							}
							if (errn == 0) {
								errn = decodeBytes(stream, iso2MeterInfoType->SigMeterReading.bytesLen, iso2MeterInfoType->SigMeterReading.bytes);
							}
							iso2MeterInfoType->SigMeterReading_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SigMeterReading) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 44;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 3:
					/* FirstStartTag[CHARACTERS[INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeInteger16(stream, &iso2MeterInfoType->MeterStatus);
							iso2MeterInfoType->MeterStatus_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeterStatus) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 45;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 4:
					/* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeInteger64(stream, &iso2MeterInfoType->TMeter);
							iso2MeterInfoType->TMeter_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}TMeter) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 5:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 42:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeterReadingDischarged), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SigMeterReading), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}TMeter), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger64(stream, &iso2MeterInfoType->MeterReadingDischarged);
							iso2MeterInfoType->MeterReadingDischarged_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeterReadingDischarged) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 43;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					/* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2MeterInfoType->SigMeterReading.bytesLen);
							if (errn == 0) {
								errn =  (iso2MeterInfoType->SigMeterReading.bytesLen) <= iso2MeterInfoType_SigMeterReading_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
							}
							if (errn == 0) {
								errn = decodeBytes(stream, iso2MeterInfoType->SigMeterReading.bytesLen, iso2MeterInfoType->SigMeterReading.bytes);
							}
							iso2MeterInfoType->SigMeterReading_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SigMeterReading) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 44;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 2:
					/* FirstStartTag[CHARACTERS[INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeInteger16(stream, &iso2MeterInfoType->MeterStatus);
							iso2MeterInfoType->MeterStatus_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeterStatus) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 45;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 3:
					/* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeInteger64(stream, &iso2MeterInfoType->TMeter);
							iso2MeterInfoType->TMeter_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}TMeter) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 4:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 43:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SigMeterReading), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}TMeter), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2MeterInfoType->SigMeterReading.bytesLen);
							if (errn == 0) {
								errn =  (iso2MeterInfoType->SigMeterReading.bytesLen) <= iso2MeterInfoType_SigMeterReading_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
							}
							if (errn == 0) {
								errn = decodeBytes(stream, iso2MeterInfoType->SigMeterReading.bytesLen, iso2MeterInfoType->SigMeterReading.bytes);
							}
							iso2MeterInfoType->SigMeterReading_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SigMeterReading) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 44;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					/* FirstStartTag[CHARACTERS[INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeInteger16(stream, &iso2MeterInfoType->MeterStatus);
							iso2MeterInfoType->MeterStatus_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeterStatus) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 45;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 2:
					/* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeInteger64(stream, &iso2MeterInfoType->TMeter);
							iso2MeterInfoType->TMeter_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}TMeter) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 3:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 44:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}TMeter), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeInteger16(stream, &iso2MeterInfoType->MeterStatus);
							iso2MeterInfoType->MeterStatus_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeterStatus) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 45;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					/* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeInteger64(stream, &iso2MeterInfoType->TMeter);
							iso2MeterInfoType->TMeter_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}TMeter) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 2:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 45:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}TMeter), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeInteger64(stream, &iso2MeterInfoType->TMeter);
							iso2MeterInfoType->TMeter_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}TMeter) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,AC_EVChargeParameterType',  base type name='EVEnergyTransferParameterType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(("urn:iso:15118:2:2016:MsgDataTypes":DepartureTime),("urn:iso:15118:2:2016:MsgDataTypes":EVMaximumChargePower,"urn:iso:15118:2:2016:MsgDataTypes":EVMaximumChargeCurrent,"urn:iso:15118:2:2016:MsgDataTypes":EVMinimumChargeCurrent,"urn:iso:15118:2:2016:MsgDataTypes":EVTargetEnergyRequest{0-1},"urn:iso:15118:2:2016:MsgDataTypes":EVMaximumEnergyRequest{0-1},"urn:iso:15118:2:2016:MsgDataTypes":EVMinimumEnergyRequest{0-1},"urn:iso:15118:2:2016:MsgDataTypes":EVMaximumVoltage))',  derivedBy='EXTENSION'.  */
static int decode_iso2AC_EVChargeParameterType(bitstream_t* stream, struct iso2AC_EVChargeParameterType* iso2AC_EVChargeParameterType) {
	int grammarID = 46;
	int done = 0;
	
	init_iso2AC_EVChargeParameterType(iso2AC_EVChargeParameterType);
	
	while(!done) {
		switch(grammarID) {
		case 46:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}DepartureTime)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger32(stream, &iso2AC_EVChargeParameterType->DepartureTime);
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}DepartureTime) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 47;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 47:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumChargePower)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2AC_EVChargeParameterType->EVMaximumChargePower);
					grammarID = 48;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 48:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumChargeCurrent)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2AC_EVChargeParameterType->EVMaximumChargeCurrent);
					grammarID = 49;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 49:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMinimumChargeCurrent)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2AC_EVChargeParameterType->EVMinimumChargeCurrent);
					grammarID = 50;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 50:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVTargetEnergyRequest), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumEnergyRequest), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMinimumEnergyRequest), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumVoltage)] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2AC_EVChargeParameterType->EVTargetEnergyRequest);
					iso2AC_EVChargeParameterType->EVTargetEnergyRequest_isUsed = 1u;
					grammarID = 51;
					break;
				case 1:
					errn = decode_iso2PhysicalValueType(stream, &iso2AC_EVChargeParameterType->EVMaximumEnergyRequest);
					iso2AC_EVChargeParameterType->EVMaximumEnergyRequest_isUsed = 1u;
					grammarID = 52;
					break;
				case 2:
					errn = decode_iso2PhysicalValueType(stream, &iso2AC_EVChargeParameterType->EVMinimumEnergyRequest);
					iso2AC_EVChargeParameterType->EVMinimumEnergyRequest_isUsed = 1u;
					grammarID = 53;
					break;
				case 3:
					errn = decode_iso2PhysicalValueType(stream, &iso2AC_EVChargeParameterType->EVMaximumVoltage);
					grammarID = 3;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 51:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumEnergyRequest), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMinimumEnergyRequest), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumVoltage)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2AC_EVChargeParameterType->EVMaximumEnergyRequest);
					iso2AC_EVChargeParameterType->EVMaximumEnergyRequest_isUsed = 1u;
					grammarID = 52;
					break;
				case 1:
					errn = decode_iso2PhysicalValueType(stream, &iso2AC_EVChargeParameterType->EVMinimumEnergyRequest);
					iso2AC_EVChargeParameterType->EVMinimumEnergyRequest_isUsed = 1u;
					grammarID = 53;
					break;
				case 2:
					errn = decode_iso2PhysicalValueType(stream, &iso2AC_EVChargeParameterType->EVMaximumVoltage);
					grammarID = 3;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 52:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMinimumEnergyRequest), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumVoltage)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2AC_EVChargeParameterType->EVMinimumEnergyRequest);
					iso2AC_EVChargeParameterType->EVMinimumEnergyRequest_isUsed = 1u;
					grammarID = 53;
					break;
				case 1:
					errn = decode_iso2PhysicalValueType(stream, &iso2AC_EVChargeParameterType->EVMaximumVoltage);
					grammarID = 3;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 53:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumVoltage)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2AC_EVChargeParameterType->EVMaximumVoltage);
					grammarID = 3;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,AC_EVSEBidirectionalParameterType',  base type name='AC_EVSEChargeParameterType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(("urn:iso:15118:2:2016:MsgDataTypes":EVSEMaximumChargeCurrent,"urn:iso:15118:2:2016:MsgDataTypes":EVSENominalVoltage,"urn:iso:15118:2:2016:MsgDataTypes":EVSENominalFrequency),("urn:iso:15118:2:2016:MsgDataTypes":EVSEMaximumDischargeCurrent,"urn:iso:15118:2:2016:MsgDataTypes":EVSENominalFrequency))',  derivedBy='EXTENSION'.  */
static int decode_iso2AC_EVSEBidirectionalParameterType(bitstream_t* stream, struct iso2AC_EVSEBidirectionalParameterType* iso2AC_EVSEBidirectionalParameterType) {
	int grammarID = 54;
	int done = 0;
	
	init_iso2AC_EVSEBidirectionalParameterType(iso2AC_EVSEBidirectionalParameterType);
	
	while(!done) {
		switch(grammarID) {
		case 54:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEMaximumChargeCurrent)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2AC_EVSEBidirectionalParameterType->EVSEMaximumChargeCurrent);
					grammarID = 55;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 55:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSENominalVoltage)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2AC_EVSEBidirectionalParameterType->EVSENominalVoltage);
					grammarID = 56;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 56:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSENominalFrequency)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2AC_EVSEBidirectionalParameterType->EVSENominalFrequency);
					grammarID = 57;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 57:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEMaximumDischargeCurrent)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2AC_EVSEBidirectionalParameterType->EVSEMaximumDischargeCurrent);
					grammarID = 58;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 58:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSENominalFrequency)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2AC_EVSEBidirectionalParameterType->EVSENominalFrequency);
					grammarID = 3;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,VehicleCheckOutResType',  base type name='V2GResponseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(("urn:iso:15118:2:2016:MsgBody":ResponseCode,"urn:iso:15118:2:2016:MsgBody":EVSEStatus{0-1}),("urn:iso:15118:2:2016:MsgBody":EVSECheckOutStatus))',  derivedBy='EXTENSION'.  */
static int decode_iso2VehicleCheckOutResType(bitstream_t* stream, struct iso2VehicleCheckOutResType* iso2VehicleCheckOutResType) {
	int grammarID = 59;
	int done = 0;
	
	init_iso2VehicleCheckOutResType(iso2VehicleCheckOutResType);
	
	while(!done) {
		switch(grammarID) {
		case 59:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 5, &uint32);
							iso2VehicleCheckOutResType->ResponseCode = (iso2responseCodeType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 60;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 60:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSECheckOutStatus)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2EVSEStatusType(stream, &iso2VehicleCheckOutResType->EVSEStatus);
					iso2VehicleCheckOutResType->EVSEStatus_isUsed = 1u;
					grammarID = 61;
					break;
				case 1:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
							iso2VehicleCheckOutResType->EVSECheckOutStatus = (iso2EVCheckOutStatusType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSECheckOutStatus) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 61:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSECheckOutStatus)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
							iso2VehicleCheckOutResType->EVSECheckOutStatus = (iso2EVCheckOutStatusType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSECheckOutStatus) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,MagneticVectorListType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgDataTypes":MagneticVector{1-255})',  derivedBy='RESTRICTION'.  */
static int decode_iso2MagneticVectorListType(bitstream_t* stream, struct iso2MagneticVectorListType* iso2MagneticVectorListType) {
	int grammarID = 62;
	int done = 0;
	
	init_iso2MagneticVectorListType(iso2MagneticVectorListType);
	
	while(!done) {
		switch(grammarID) {
		case 62:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 63;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 63:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 64;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 64:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 65;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 65:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 66;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 66:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 67;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 67:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 68;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 68:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 69;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 69:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 70;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 70:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 71;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 71:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 72;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 72:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 73;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 73:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 74;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 74:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 75;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 75:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 76;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 76:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 77;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 77:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 78;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 78:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 79;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 79:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 80;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 80:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 81;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 81:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 82;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 82:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 83;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 83:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 84;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 84:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 85;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 85:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 86;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 86:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 87;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 87:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 88;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 88:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 89;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 89:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 90;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 90:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 91;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 91:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 92;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 92:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 93;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 93:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 94;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 94:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 95;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 95:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 96;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 96:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 97;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 97:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 98;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 98:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 99;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 99:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 100;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 100:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 101;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 101:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 102;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 102:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 103;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 103:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 104;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 104:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 105;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 105:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 106;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 106:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 107;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 107:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 108;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 108:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 109;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 109:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 110;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 110:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 111;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 111:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 112;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 112:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 113;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 113:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 114;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 114:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 115;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 115:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 116;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 116:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 117;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 117:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 118;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 118:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 119;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 119:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 120;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 120:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 121;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 121:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 122;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 122:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 123;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 123:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 124;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 124:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 125;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 125:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 126;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 126:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 127;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 127:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 128;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 128:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 129;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 129:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 130;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 130:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 131;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 131:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 132;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 132:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 133;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 133:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 134;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 134:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 135;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 135:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 136;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 136:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 137;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 137:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 138;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 138:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 139;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 139:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 140;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 140:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 141;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 141:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 142;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 142:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 143;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 143:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 144;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 144:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 145;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 145:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 146;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 146:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 147;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 147:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 148;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 148:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 149;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 149:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 150;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 150:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 151;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 151:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 152;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 152:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 153;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 153:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 154;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 154:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 155;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 155:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 156;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 156:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 157;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 157:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 158;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 158:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 159;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 159:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 160;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 160:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 161;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 161:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 162;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 162:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 163;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 163:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 164;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 164:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 165;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 165:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 166;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 166:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 167;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 167:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 168;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 168:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 169;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 169:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 170;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 170:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 171;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 171:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 172;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 172:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 173;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 173:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 174;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 174:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 175;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 175:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 176;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 176:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 177;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 177:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 178;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 178:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 179;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 179:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 180;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 180:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 181;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 181:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 182;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 182:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 183;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 183:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 184;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 184:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 185;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 185:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 186;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 186:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 187;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 187:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 188;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 188:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 189;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 189:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 190;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 190:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 191;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 191:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 192;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 192:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 193;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 193:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 194;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 194:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 195;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 195:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 196;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 196:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 197;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 197:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 198;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 198:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 199;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 199:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 200;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 200:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 201;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 201:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 202;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 202:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 203;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 203:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 204;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 204:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 205;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 205:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 206;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 206:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 207;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 207:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 208;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 208:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 209;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 209:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 210;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 210:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 211;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 211:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 212;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 212:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 213;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 213:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 214;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 214:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 215;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 215:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 216;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 216:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 217;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 217:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 218;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 218:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 219;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 219:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 220;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 220:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 221;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 221:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 222;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 222:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 223;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 223:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 224;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 224:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 225;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 225:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 226;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 226:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 227;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 227:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 228;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 228:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 229;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 229:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 230;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 230:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 231;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 231:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 232;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 232:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 233;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 233:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 234;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 234:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 235;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 235:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 236;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 236:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 237;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 237:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 238;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 238:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 239;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 239:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 240;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 240:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 241;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 241:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 242;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 242:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 243;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 243:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 244;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 244:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 245;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 245:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 246;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 246:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 247;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 247:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 248;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 248:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 249;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 249:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 250;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 250:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 251;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 251:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 252;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 252:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 253;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 253:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 254;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 254:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 255;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 255:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 256;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 256:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 257;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 257:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 258;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 258:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 259;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 259:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 260;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 260:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 261;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 261:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 262;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 262:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 263;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 263:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 264;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 264:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 265;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 265:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 266;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 266:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 267;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 267:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 268;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 268:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 269;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 269:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 270;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 270:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 271;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 271:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 272;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 272:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 273;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 273:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 274;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 274:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 275;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 275:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 276;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 276:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 277;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 277:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 278;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 278:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 279;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 279:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 280;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 280:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 281;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 281:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 282;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 282:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 283;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 283:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 284;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 284:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 285;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 285:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 286;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 286:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 287;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 287:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 288;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 288:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 289;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 289:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 290;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 290:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 291;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 291:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 292;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 292:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 293;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 293:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 294;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 294:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 295;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 295:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 296;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 296:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 297;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 297:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 298;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 298:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 299;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 299:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 300;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 300:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 301;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 301:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 302;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 302:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 303;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 303:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 304;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 304:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 305;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 305:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 306;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 306:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 307;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 307:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 308;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 308:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 309;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 309:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 310;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 310:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 311;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 311:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 312;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 312:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 313;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 313:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 314;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 314:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 315;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 315:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 316;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 316:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorListType->MagneticVector.arrayLen < iso2MagneticVectorListType_MagneticVector_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorType(stream, &iso2MagneticVectorListType->MagneticVector.array[iso2MagneticVectorListType->MagneticVector.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 3;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,CableCheckResType',  base type name='V2GResponseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(("urn:iso:15118:2:2016:MsgBody":ResponseCode,"urn:iso:15118:2:2016:MsgBody":EVSEStatus{0-1}),("urn:iso:15118:2:2016:MsgBody":EVSEProcessing))',  derivedBy='EXTENSION'.  */
static int decode_iso2CableCheckResType(bitstream_t* stream, struct iso2CableCheckResType* iso2CableCheckResType) {
	int grammarID = 5;
	int done = 0;
	
	init_iso2CableCheckResType(iso2CableCheckResType);
	
	while(!done) {
		switch(grammarID) {
		case 5:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 5, &uint32);
							iso2CableCheckResType->ResponseCode = (iso2responseCodeType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 6;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 6:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEProcessing)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2EVSEStatusType(stream, &iso2CableCheckResType->EVSEStatus);
					iso2CableCheckResType->EVSEStatus_isUsed = 1u;
					grammarID = 7;
					break;
				case 1:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
							iso2CableCheckResType->EVSEProcessing = (iso2EVSEProcessingType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEProcessing) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 7:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEProcessing)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
							iso2CableCheckResType->EVSEProcessing = (iso2EVSEProcessingType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEProcessing) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,ServiceDiscoveryReqType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgBody":SupportedServiceIDs{0-1})',  derivedBy='EXTENSION'.  */
static int decode_iso2ServiceDiscoveryReqType(bitstream_t* stream, struct iso2ServiceDiscoveryReqType* iso2ServiceDiscoveryReqType) {
	int grammarID = 317;
	int done = 0;
	
	init_iso2ServiceDiscoveryReqType(iso2ServiceDiscoveryReqType);
	
	while(!done) {
		switch(grammarID) {
		case 317:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SupportedServiceIDs), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2ServiceIDListType(stream, &iso2ServiceDiscoveryReqType->SupportedServiceIDs);
					iso2ServiceDiscoveryReqType->SupportedServiceIDs_isUsed = 1u;
					grammarID = 3;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,ServiceType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgDataTypes":ServiceID,"urn:iso:15118:2:2016:MsgDataTypes":FreeService)',  derivedBy='RESTRICTION'.  */
static int decode_iso2ServiceType(bitstream_t* stream, struct iso2ServiceType* iso2ServiceType) {
	int grammarID = 318;
	int done = 0;
	
	init_iso2ServiceType(iso2ServiceType);
	
	while(!done) {
		switch(grammarID) {
		case 318:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ServiceID)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2ServiceType->ServiceID);
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ServiceID) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 319;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 319:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}FreeService)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[BOOLEAN]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeBoolean(stream, &iso2ServiceType->FreeService);
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}FreeService) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,ServiceParameterListType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgDataTypes":ParameterSet{1-255})',  derivedBy='RESTRICTION'.  */
static int decode_iso2ServiceParameterListType(bitstream_t* stream, struct iso2ServiceParameterListType* iso2ServiceParameterListType) {
	int grammarID = 320;
	int done = 0;
	
	init_iso2ServiceParameterListType(iso2ServiceParameterListType);
	
	while(!done) {
		switch(grammarID) {
		case 320:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 321;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 321:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 322;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 322:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 323;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 323:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 324;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 324:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 325;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 325:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 326;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 326:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 327;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 327:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 328;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 328:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 329;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 329:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 330;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 330:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 331;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 331:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 332;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 332:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 333;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 333:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 334;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 334:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 335;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 335:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 336;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 336:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 337;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 337:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 338;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 338:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 339;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 339:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 340;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 340:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 341;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 341:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 342;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 342:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 343;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 343:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 344;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 344:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 345;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 345:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 346;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 346:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 347;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 347:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 348;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 348:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 349;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 349:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 350;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 350:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 351;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 351:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 352;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 352:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 353;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 353:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 354;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 354:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 355;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 355:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 356;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 356:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 357;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 357:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 358;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 358:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 359;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 359:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 360;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 360:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 361;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 361:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 362;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 362:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 363;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 363:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 364;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 364:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 365;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 365:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 366;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 366:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 367;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 367:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 368;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 368:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 369;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 369:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 370;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 370:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 371;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 371:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 372;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 372:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 373;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 373:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 374;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 374:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 375;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 375:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 376;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 376:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 377;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 377:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 378;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 378:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 379;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 379:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 380;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 380:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 381;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 381:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 382;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 382:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 383;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 383:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 384;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 384:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 385;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 385:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 386;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 386:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 387;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 387:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 388;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 388:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 389;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 389:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 390;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 390:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 391;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 391:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 392;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 392:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 393;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 393:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 394;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 394:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 395;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 395:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 396;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 396:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 397;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 397:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 398;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 398:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 399;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 399:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 400;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 400:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 401;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 401:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 402;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 402:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 403;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 403:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 404;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 404:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 405;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 405:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 406;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 406:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 407;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 407:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 408;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 408:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 409;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 409:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 410;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 410:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 411;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 411:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 412;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 412:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 413;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 413:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 414;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 414:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 415;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 415:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 416;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 416:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 417;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 417:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 418;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 418:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 419;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 419:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 420;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 420:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 421;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 421:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 422;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 422:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 423;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 423:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 424;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 424:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 425;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 425:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 426;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 426:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 427;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 427:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 428;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 428:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 429;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 429:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 430;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 430:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 431;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 431:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 432;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 432:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 433;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 433:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 434;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 434:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 435;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 435:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 436;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 436:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 437;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 437:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 438;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 438:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 439;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 439:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 440;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 440:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 441;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 441:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 442;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 442:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 443;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 443:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 444;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 444:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 445;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 445:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 446;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 446:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 447;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 447:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 448;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 448:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 449;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 449:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 450;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 450:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 451;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 451:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 452;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 452:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 453;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 453:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 454;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 454:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 455;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 455:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 456;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 456:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 457;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 457:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 458;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 458:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 459;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 459:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 460;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 460:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 461;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 461:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 462;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 462:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 463;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 463:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 464;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 464:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 465;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 465:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 466;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 466:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 467;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 467:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 468;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 468:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 469;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 469:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 470;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 470:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 471;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 471:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 472;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 472:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 473;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 473:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 474;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 474:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 475;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 475:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 476;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 476:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 477;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 477:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 478;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 478:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 479;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 479:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 480;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 480:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 481;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 481:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 482;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 482:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 483;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 483:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 484;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 484:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 485;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 485:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 486;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 486:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 487;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 487:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 488;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 488:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 489;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 489:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 490;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 490:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 491;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 491:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 492;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 492:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 493;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 493:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 494;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 494:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 495;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 495:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 496;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 496:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 497;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 497:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 498;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 498:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 499;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 499:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 500;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 500:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 501;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 501:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 502;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 502:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 503;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 503:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 504;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 504:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 505;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 505:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 506;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 506:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 507;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 507:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 508;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 508:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 509;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 509:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 510;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 510:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 511;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 511:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 512;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 512:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 513;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 513:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 514;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 514:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 515;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 515:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 516;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 516:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 517;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 517:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 518;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 518:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 519;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 519:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 520;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 520:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 521;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 521:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 522;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 522:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 523;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 523:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 524;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 524:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 525;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 525:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 526;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 526:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 527;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 527:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 528;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 528:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 529;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 529:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 530;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 530:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 531;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 531:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 532;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 532:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 533;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 533:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 534;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 534:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 535;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 535:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 536;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 536:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 537;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 537:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 538;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 538:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 539;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 539:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 540;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 540:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 541;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 541:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 542;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 542:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 543;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 543:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 544;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 544:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 545;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 545:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 546;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 546:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 547;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 547:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 548;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 548:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 549;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 549:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 550;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 550:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 551;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 551:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 552;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 552:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 553;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 553:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 554;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 554:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 555;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 555:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 556;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 556:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 557;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 557:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 558;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 558:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 559;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 559:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 560;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 560:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 561;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 561:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 562;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 562:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 563;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 563:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 564;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 564:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 565;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 565:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 566;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 566:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 567;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 567:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 568;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 568:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 569;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 569:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 570;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 570:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 571;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 571:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 572;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 572:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 573;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 573:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 574;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 574:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceParameterListType->ParameterSet.arrayLen < iso2ServiceParameterListType_ParameterSet_ARRAY_SIZE) {
						errn = decode_iso2ParameterSetType(stream, &iso2ServiceParameterListType->ParameterSet.array[iso2ServiceParameterListType->ParameterSet.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 3;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,PMaxScheduleType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgDataTypes":PMaxScheduleEntry{1-UNBOUNDED})',  derivedBy='RESTRICTION'.  */
static int decode_iso2PMaxScheduleType(bitstream_t* stream, struct iso2PMaxScheduleType* iso2PMaxScheduleType) {
	int grammarID = 575;
	int done = 0;
	
	init_iso2PMaxScheduleType(iso2PMaxScheduleType);
	
	while(!done) {
		switch(grammarID) {
		case 575:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}PMaxScheduleEntry)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2PMaxScheduleType->PMaxScheduleEntry.arrayLen < iso2PMaxScheduleType_PMaxScheduleEntry_ARRAY_SIZE) {
						errn = decode_iso2PMaxScheduleEntryType(stream, &iso2PMaxScheduleType->PMaxScheduleEntry.array[iso2PMaxScheduleType->PMaxScheduleEntry.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 576;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 576:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}PMaxScheduleEntry), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2PMaxScheduleType->PMaxScheduleEntry.arrayLen < iso2PMaxScheduleType_PMaxScheduleEntry_ARRAY_SIZE) {
						errn = decode_iso2PMaxScheduleEntryType(stream, &iso2PMaxScheduleType->PMaxScheduleEntry.array[iso2PMaxScheduleType->PMaxScheduleEntry.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 576;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='http://www.w3.org/2000/09/xmldsig#,SignaturePropertiesType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("http://www.w3.org/2000/09/xmldsig#":SignatureProperty{1-UNBOUNDED})',  derivedBy='RESTRICTION'.  */
static int decode_iso2SignaturePropertiesType(bitstream_t* stream, struct iso2SignaturePropertiesType* iso2SignaturePropertiesType) {
	int grammarID = 577;
	int done = 0;
	
	init_iso2SignaturePropertiesType(iso2SignaturePropertiesType);
	
	while(!done) {
		switch(grammarID) {
		case 577:
			/* FirstStartTag[ATTRIBUTE[STRING](Id), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decodeUnsignedInteger16(stream, &iso2SignaturePropertiesType->Id.charactersLen);
					if (errn == 0) {
						if (iso2SignaturePropertiesType->Id.charactersLen >= 2) {
							iso2SignaturePropertiesType->Id.charactersLen = (uint16_t)(iso2SignaturePropertiesType->Id.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2SignaturePropertiesType->Id.charactersLen, iso2SignaturePropertiesType->Id.characters, iso2SignaturePropertiesType_Id_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					iso2SignaturePropertiesType->Id_isUsed = 1u;
					grammarID = 578;
					break;
				case 1:
					if (iso2SignaturePropertiesType->SignatureProperty.arrayLen < iso2SignaturePropertiesType_SignatureProperty_ARRAY_SIZE) {
						errn = decode_iso2SignaturePropertyType(stream, &iso2SignaturePropertiesType->SignatureProperty.array[iso2SignaturePropertiesType->SignatureProperty.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 579;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 578:
			/* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SignaturePropertiesType->SignatureProperty.arrayLen < iso2SignaturePropertiesType_SignatureProperty_ARRAY_SIZE) {
						errn = decode_iso2SignaturePropertyType(stream, &iso2SignaturePropertiesType->SignatureProperty.array[iso2SignaturePropertiesType->SignatureProperty.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 579;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 579:
			/* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SignaturePropertiesType->SignatureProperty.arrayLen < iso2SignaturePropertiesType_SignatureProperty_ARRAY_SIZE) {
						errn = decode_iso2SignaturePropertyType(stream, &iso2SignaturePropertiesType->SignatureProperty.array[iso2SignaturePropertiesType->SignatureProperty.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 579;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,PMaxScheduleEntryType',  base type name='EntryType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(("urn:iso:15118:2:2016:MsgDataTypes":RelativeTimeInterval),("urn:iso:15118:2:2016:MsgDataTypes":PMax{1-3}))',  derivedBy='EXTENSION'.  */
static int decode_iso2PMaxScheduleEntryType(bitstream_t* stream, struct iso2PMaxScheduleEntryType* iso2PMaxScheduleEntryType) {
	int grammarID = 580;
	int done = 0;
	
	init_iso2PMaxScheduleEntryType(iso2PMaxScheduleEntryType);
	
	while(!done) {
		switch(grammarID) {
		case 580:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RelativeTimeInterval)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2RelativeTimeIntervalType(stream, &iso2PMaxScheduleEntryType->RelativeTimeInterval);
					grammarID = 581;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 581:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}PMax)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2PMaxScheduleEntryType->PMax.arrayLen < iso2PMaxScheduleEntryType_PMax_ARRAY_SIZE) {
						errn = decode_iso2PhysicalValueType(stream, &iso2PMaxScheduleEntryType->PMax.array[iso2PMaxScheduleEntryType->PMax.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 582;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 582:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}PMax), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2PMaxScheduleEntryType->PMax.arrayLen < iso2PMaxScheduleEntryType_PMax_ARRAY_SIZE) {
						errn = decode_iso2PhysicalValueType(stream, &iso2PMaxScheduleEntryType->PMax.array[iso2PMaxScheduleEntryType->PMax.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 583;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 583:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}PMax), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2PMaxScheduleEntryType->PMax.arrayLen < iso2PMaxScheduleEntryType_PMax_ARRAY_SIZE) {
						errn = decode_iso2PhysicalValueType(stream, &iso2PMaxScheduleEntryType->PMax.array[iso2PMaxScheduleEntryType->PMax.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 3;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='http://www.w3.org/2000/09/xmldsig#,SignatureType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("http://www.w3.org/2000/09/xmldsig#":SignedInfo,"http://www.w3.org/2000/09/xmldsig#":SignatureValue,"http://www.w3.org/2000/09/xmldsig#":KeyInfo{0-1},"http://www.w3.org/2000/09/xmldsig#":Object{0-UNBOUNDED})',  derivedBy='RESTRICTION'.  */
static int decode_iso2SignatureType(bitstream_t* stream, struct iso2SignatureType* iso2SignatureType) {
	int grammarID = 584;
	int done = 0;
	
	init_iso2SignatureType(iso2SignatureType);
	
	while(!done) {
		switch(grammarID) {
		case 584:
			/* FirstStartTag[ATTRIBUTE[STRING](Id), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decodeUnsignedInteger16(stream, &iso2SignatureType->Id.charactersLen);
					if (errn == 0) {
						if (iso2SignatureType->Id.charactersLen >= 2) {
							iso2SignatureType->Id.charactersLen = (uint16_t)(iso2SignatureType->Id.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2SignatureType->Id.charactersLen, iso2SignatureType->Id.characters, iso2SignatureType_Id_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					iso2SignatureType->Id_isUsed = 1u;
					grammarID = 585;
					break;
				case 1:
					errn = decode_iso2SignedInfoType(stream, &iso2SignatureType->SignedInfo);
					grammarID = 586;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 585:
			/* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2SignedInfoType(stream, &iso2SignatureType->SignedInfo);
					grammarID = 586;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 586:
			/* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureValue)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2SignatureValueType(stream, &iso2SignatureType->SignatureValue);
					grammarID = 587;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 587:
			/* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyInfo), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2KeyInfoType(stream, &iso2SignatureType->KeyInfo);
					iso2SignatureType->KeyInfo_isUsed = 1u;
					grammarID = 588;
					break;
				case 1:
					if (iso2SignatureType->Object.arrayLen < iso2SignatureType_Object_ARRAY_SIZE) {
						errn = decode_iso2ObjectType(stream, &iso2SignatureType->Object.array[iso2SignatureType->Object.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 588;
					break;
				case 2:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 588:
			/* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SignatureType->Object.arrayLen < iso2SignatureType_Object_ARRAY_SIZE) {
						errn = decode_iso2ObjectType(stream, &iso2SignatureType->Object.array[iso2SignatureType->Object.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 588;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,VehicleCheckInReqType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgBody":EVCheckInStatus,"urn:iso:15118:2:2016:MsgBody":ParkingMethod{0-1})',  derivedBy='EXTENSION'.  */
static int decode_iso2VehicleCheckInReqType(bitstream_t* stream, struct iso2VehicleCheckInReqType* iso2VehicleCheckInReqType) {
	int grammarID = 589;
	int done = 0;
	
	init_iso2VehicleCheckInReqType(iso2VehicleCheckInReqType);
	
	while(!done) {
		switch(grammarID) {
		case 589:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVCheckInStatus)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
							iso2VehicleCheckInReqType->EVCheckInStatus = (iso2EVCheckInStatusType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVCheckInStatus) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 590;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 590:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ParkingMethod), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
							iso2VehicleCheckInReqType->ParkingMethod = (iso2parkingMethodType) uint32;
							iso2VehicleCheckInReqType->ParkingMethod_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ParkingMethod) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,ConnectChargingDeviceResType',  base type name='V2GResponseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(("urn:iso:15118:2:2016:MsgBody":ResponseCode,"urn:iso:15118:2:2016:MsgBody":EVSEStatus{0-1}),("urn:iso:15118:2:2016:MsgBody":EVSEProcessing,"urn:iso:15118:2:2016:MsgBody":EVSEElectricalChargingDeviceStatus,"urn:iso:15118:2:2016:MsgBody":EVSEMechanicalChargingDeviceStatus))',  derivedBy='EXTENSION'.  */
static int decode_iso2ConnectChargingDeviceResType(bitstream_t* stream, struct iso2ConnectChargingDeviceResType* iso2ConnectChargingDeviceResType) {
	int grammarID = 591;
	int done = 0;
	
	init_iso2ConnectChargingDeviceResType(iso2ConnectChargingDeviceResType);
	
	while(!done) {
		switch(grammarID) {
		case 591:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 5, &uint32);
							iso2ConnectChargingDeviceResType->ResponseCode = (iso2responseCodeType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 592;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 592:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEProcessing)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2EVSEStatusType(stream, &iso2ConnectChargingDeviceResType->EVSEStatus);
					iso2ConnectChargingDeviceResType->EVSEStatus_isUsed = 1u;
					grammarID = 593;
					break;
				case 1:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
							iso2ConnectChargingDeviceResType->EVSEProcessing = (iso2EVSEProcessingType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEProcessing) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 594;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 593:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEProcessing)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
							iso2ConnectChargingDeviceResType->EVSEProcessing = (iso2EVSEProcessingType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEProcessing) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 594;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 594:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEElectricalChargingDeviceStatus)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 1, &uint32);
							iso2ConnectChargingDeviceResType->EVSEElectricalChargingDeviceStatus = (iso2electricalChargingDeviceStatusType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEElectricalChargingDeviceStatus) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 595;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 595:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEMechanicalChargingDeviceStatus)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
							iso2ConnectChargingDeviceResType->EVSEMechanicalChargingDeviceStatus = (iso2mechanicalChargingDeviceStatusType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEMechanicalChargingDeviceStatus) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,WeldingDetectionResType',  base type name='V2GResponseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(("urn:iso:15118:2:2016:MsgBody":ResponseCode,"urn:iso:15118:2:2016:MsgBody":EVSEStatus{0-1}),("urn:iso:15118:2:2016:MsgBody":EVSEPresentVoltage))',  derivedBy='EXTENSION'.  */
static int decode_iso2WeldingDetectionResType(bitstream_t* stream, struct iso2WeldingDetectionResType* iso2WeldingDetectionResType) {
	int grammarID = 596;
	int done = 0;
	
	init_iso2WeldingDetectionResType(iso2WeldingDetectionResType);
	
	while(!done) {
		switch(grammarID) {
		case 596:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 5, &uint32);
							iso2WeldingDetectionResType->ResponseCode = (iso2responseCodeType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 597;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 597:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEPresentVoltage)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2EVSEStatusType(stream, &iso2WeldingDetectionResType->EVSEStatus);
					iso2WeldingDetectionResType->EVSEStatus_isUsed = 1u;
					grammarID = 598;
					break;
				case 1:
					errn = decode_iso2PhysicalValueType(stream, &iso2WeldingDetectionResType->EVSEPresentVoltage);
					grammarID = 3;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 598:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEPresentVoltage)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2WeldingDetectionResType->EVSEPresentVoltage);
					grammarID = 3;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,SessionStopResType',  base type name='V2GResponseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgBody":ResponseCode,"urn:iso:15118:2:2016:MsgBody":EVSEStatus{0-1})',  derivedBy='EXTENSION'.  */
static int decode_iso2SessionStopResType(bitstream_t* stream, struct iso2SessionStopResType* iso2SessionStopResType) {
	int grammarID = 599;
	int done = 0;
	
	init_iso2SessionStopResType(iso2SessionStopResType);
	
	while(!done) {
		switch(grammarID) {
		case 599:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 5, &uint32);
							iso2SessionStopResType->ResponseCode = (iso2responseCodeType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 600;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 600:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEStatus), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2EVSEStatusType(stream, &iso2SessionStopResType->EVSEStatus);
					iso2SessionStopResType->EVSEStatus_isUsed = 1u;
					grammarID = 3;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,VehicleCheckInResType',  base type name='V2GResponseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(("urn:iso:15118:2:2016:MsgBody":ResponseCode,"urn:iso:15118:2:2016:MsgBody":EVSEStatus{0-1}),("urn:iso:15118:2:2016:MsgBody":VehicleSpace,"urn:iso:15118:2:2016:MsgBody":TargetOffset{0-1}))',  derivedBy='EXTENSION'.  */
static int decode_iso2VehicleCheckInResType(bitstream_t* stream, struct iso2VehicleCheckInResType* iso2VehicleCheckInResType) {
	int grammarID = 601;
	int done = 0;
	
	init_iso2VehicleCheckInResType(iso2VehicleCheckInResType);
	
	while(!done) {
		switch(grammarID) {
		case 601:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 5, &uint32);
							iso2VehicleCheckInResType->ResponseCode = (iso2responseCodeType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 602;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 602:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}VehicleSpace)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2EVSEStatusType(stream, &iso2VehicleCheckInResType->EVSEStatus);
					iso2VehicleCheckInResType->EVSEStatus_isUsed = 1u;
					grammarID = 603;
					break;
				case 1:
					/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2VehicleCheckInResType->VehicleSpace);
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}VehicleSpace) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 604;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 603:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}VehicleSpace)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2VehicleCheckInResType->VehicleSpace);
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}VehicleSpace) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 604;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 604:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}TargetOffset), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2TargetPositionType(stream, &iso2VehicleCheckInResType->TargetOffset);
					iso2VehicleCheckInResType->TargetOffset_isUsed = 1u;
					grammarID = 3;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,ServiceListType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgDataTypes":Service{1-8})',  derivedBy='RESTRICTION'.  */
static int decode_iso2ServiceListType(bitstream_t* stream, struct iso2ServiceListType* iso2ServiceListType) {
	int grammarID = 605;
	int done = 0;
	
	init_iso2ServiceListType(iso2ServiceListType);
	
	while(!done) {
		switch(grammarID) {
		case 605:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Service)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceListType->Service.arrayLen < iso2ServiceListType_Service_ARRAY_SIZE) {
						errn = decode_iso2ServiceType(stream, &iso2ServiceListType->Service.array[iso2ServiceListType->Service.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 606;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 606:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Service), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceListType->Service.arrayLen < iso2ServiceListType_Service_ARRAY_SIZE) {
						errn = decode_iso2ServiceType(stream, &iso2ServiceListType->Service.array[iso2ServiceListType->Service.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 607;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 607:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Service), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceListType->Service.arrayLen < iso2ServiceListType_Service_ARRAY_SIZE) {
						errn = decode_iso2ServiceType(stream, &iso2ServiceListType->Service.array[iso2ServiceListType->Service.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 608;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 608:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Service), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceListType->Service.arrayLen < iso2ServiceListType_Service_ARRAY_SIZE) {
						errn = decode_iso2ServiceType(stream, &iso2ServiceListType->Service.array[iso2ServiceListType->Service.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 609;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 609:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Service), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceListType->Service.arrayLen < iso2ServiceListType_Service_ARRAY_SIZE) {
						errn = decode_iso2ServiceType(stream, &iso2ServiceListType->Service.array[iso2ServiceListType->Service.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 610;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 610:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Service), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceListType->Service.arrayLen < iso2ServiceListType_Service_ARRAY_SIZE) {
						errn = decode_iso2ServiceType(stream, &iso2ServiceListType->Service.array[iso2ServiceListType->Service.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 611;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 611:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Service), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceListType->Service.arrayLen < iso2ServiceListType_Service_ARRAY_SIZE) {
						errn = decode_iso2ServiceType(stream, &iso2ServiceListType->Service.array[iso2ServiceListType->Service.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 612;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 612:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Service), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceListType->Service.arrayLen < iso2ServiceListType_Service_ARRAY_SIZE) {
						errn = decode_iso2ServiceType(stream, &iso2ServiceListType->Service.array[iso2ServiceListType->Service.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 3;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,CertificateUpdateResType',  base type name='V2GResponseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(("urn:iso:15118:2:2016:MsgBody":ResponseCode,"urn:iso:15118:2:2016:MsgBody":EVSEStatus{0-1}),("urn:iso:15118:2:2016:MsgBody":SAProvisioningCertificateChain,"urn:iso:15118:2:2016:MsgBody":ContractSignatureCertChain,"urn:iso:15118:2:2016:MsgBody":ContractSignatureEncryptedPrivateKey,"urn:iso:15118:2:2016:MsgBody":DHpublickey,"urn:iso:15118:2:2016:MsgBody":eMAID,"urn:iso:15118:2:2016:MsgBody":RetryCounter{0-1}))',  derivedBy='EXTENSION'.  */
static int decode_iso2CertificateUpdateResType(bitstream_t* stream, struct iso2CertificateUpdateResType* iso2CertificateUpdateResType) {
	int grammarID = 613;
	int done = 0;
	
	init_iso2CertificateUpdateResType(iso2CertificateUpdateResType);
	
	while(!done) {
		switch(grammarID) {
		case 613:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 5, &uint32);
							iso2CertificateUpdateResType->ResponseCode = (iso2responseCodeType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 614;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 614:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SAProvisioningCertificateChain)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2EVSEStatusType(stream, &iso2CertificateUpdateResType->EVSEStatus);
					iso2CertificateUpdateResType->EVSEStatus_isUsed = 1u;
					grammarID = 615;
					break;
				case 1:
					errn = decode_iso2CertificateChainType(stream, &iso2CertificateUpdateResType->SAProvisioningCertificateChain);
					grammarID = 616;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 615:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SAProvisioningCertificateChain)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2CertificateChainType(stream, &iso2CertificateUpdateResType->SAProvisioningCertificateChain);
					grammarID = 616;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 616:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ContractSignatureCertChain)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2CertificateChainType(stream, &iso2CertificateUpdateResType->ContractSignatureCertChain);
					grammarID = 617;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 617:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ContractSignatureEncryptedPrivateKey)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2ContractSignatureEncryptedPrivateKeyType(stream, &iso2CertificateUpdateResType->ContractSignatureEncryptedPrivateKey);
					grammarID = 618;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 618:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}DHpublickey)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2DiffieHellmanPublickeyType(stream, &iso2CertificateUpdateResType->DHpublickey);
					grammarID = 619;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 619:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}eMAID)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2EMAIDType(stream, &iso2CertificateUpdateResType->eMAID);
					grammarID = 620;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 620:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}RetryCounter), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeInteger16(stream, &iso2CertificateUpdateResType->RetryCounter);
							iso2CertificateUpdateResType->RetryCounter_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}RetryCounter) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,FinePositioningSetupResType',  base type name='V2GResponseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(("urn:iso:15118:2:2016:MsgBody":ResponseCode,"urn:iso:15118:2:2016:MsgBody":EVSEStatus{0-1}),("urn:iso:15118:2:2016:MsgDataTypes":EVSEFinePositioningSetupParameters{0-1}))',  derivedBy='EXTENSION'.  */
static int decode_iso2FinePositioningSetupResType(bitstream_t* stream, struct iso2FinePositioningSetupResType* iso2FinePositioningSetupResType) {
	int grammarID = 621;
	int done = 0;
	
	init_iso2FinePositioningSetupResType(iso2FinePositioningSetupResType);
	
	while(!done) {
		switch(grammarID) {
		case 621:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 5, &uint32);
							iso2FinePositioningSetupResType->ResponseCode = (iso2responseCodeType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 622;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 622:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEFinePositioningSetupParameters), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}LFA_EVSEFinePositioningSetupParameters), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MV_EVSEFinePositioningSetupParameters), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2EVSEStatusType(stream, &iso2FinePositioningSetupResType->EVSEStatus);
					iso2FinePositioningSetupResType->EVSEStatus_isUsed = 1u;
					grammarID = 623;
					break;
				case 1:
					errn = decode_iso2EVSEFinePositioningSetupParametersType(stream, &iso2FinePositioningSetupResType->EVSEFinePositioningSetupParameters);
					iso2FinePositioningSetupResType->EVSEFinePositioningSetupParameters_isUsed = 1u;
					grammarID = 3;
					break;
				case 2:
					errn = decode_iso2LFA_EVSEFinePositioningSetupParametersType(stream, &iso2FinePositioningSetupResType->LFA_EVSEFinePositioningSetupParameters);
					iso2FinePositioningSetupResType->LFA_EVSEFinePositioningSetupParameters_isUsed = 1u;
					grammarID = 3;
					break;
				case 3:
					errn = decode_iso2MV_EVSEFinePositioningSetupParametersType(stream, &iso2FinePositioningSetupResType->MV_EVSEFinePositioningSetupParameters);
					iso2FinePositioningSetupResType->MV_EVSEFinePositioningSetupParameters_isUsed = 1u;
					grammarID = 3;
					break;
				case 4:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 623:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEFinePositioningSetupParameters), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}LFA_EVSEFinePositioningSetupParameters), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MV_EVSEFinePositioningSetupParameters), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2EVSEFinePositioningSetupParametersType(stream, &iso2FinePositioningSetupResType->EVSEFinePositioningSetupParameters);
					iso2FinePositioningSetupResType->EVSEFinePositioningSetupParameters_isUsed = 1u;
					grammarID = 3;
					break;
				case 1:
					errn = decode_iso2LFA_EVSEFinePositioningSetupParametersType(stream, &iso2FinePositioningSetupResType->LFA_EVSEFinePositioningSetupParameters);
					iso2FinePositioningSetupResType->LFA_EVSEFinePositioningSetupParameters_isUsed = 1u;
					grammarID = 3;
					break;
				case 2:
					errn = decode_iso2MV_EVSEFinePositioningSetupParametersType(stream, &iso2FinePositioningSetupResType->MV_EVSEFinePositioningSetupParameters);
					iso2FinePositioningSetupResType->MV_EVSEFinePositioningSetupParameters_isUsed = 1u;
					grammarID = 3;
					break;
				case 3:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,AC_EVBidirectionalParameterType',  base type name='AC_EVChargeParameterType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='((("urn:iso:15118:2:2016:MsgDataTypes":DepartureTime),("urn:iso:15118:2:2016:MsgDataTypes":EVMaximumChargePower,"urn:iso:15118:2:2016:MsgDataTypes":EVMaximumChargeCurrent,"urn:iso:15118:2:2016:MsgDataTypes":EVMinimumChargeCurrent,"urn:iso:15118:2:2016:MsgDataTypes":EVTargetEnergyRequest{0-1},"urn:iso:15118:2:2016:MsgDataTypes":EVMaximumEnergyRequest{0-1},"urn:iso:15118:2:2016:MsgDataTypes":EVMinimumEnergyRequest{0-1},"urn:iso:15118:2:2016:MsgDataTypes":EVMaximumVoltage)),("urn:iso:15118:2:2016:MsgDataTypes":EVMaximumDischargePower,"urn:iso:15118:2:2016:MsgDataTypes":EVMaximumDischargeCurrent,"urn:iso:15118:2:2016:MsgDataTypes":EVMinimumDischargeCurrent))',  derivedBy='EXTENSION'.  */
static int decode_iso2AC_EVBidirectionalParameterType(bitstream_t* stream, struct iso2AC_EVBidirectionalParameterType* iso2AC_EVBidirectionalParameterType) {
	int grammarID = 624;
	int done = 0;
	
	init_iso2AC_EVBidirectionalParameterType(iso2AC_EVBidirectionalParameterType);
	
	while(!done) {
		switch(grammarID) {
		case 624:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}DepartureTime)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger32(stream, &iso2AC_EVBidirectionalParameterType->DepartureTime);
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}DepartureTime) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 625;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 625:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumChargePower)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2AC_EVBidirectionalParameterType->EVMaximumChargePower);
					grammarID = 626;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 626:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumChargeCurrent)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2AC_EVBidirectionalParameterType->EVMaximumChargeCurrent);
					grammarID = 627;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 627:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMinimumChargeCurrent)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2AC_EVBidirectionalParameterType->EVMinimumChargeCurrent);
					grammarID = 628;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 628:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVTargetEnergyRequest), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumEnergyRequest), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMinimumEnergyRequest), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumVoltage)] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2AC_EVBidirectionalParameterType->EVTargetEnergyRequest);
					iso2AC_EVBidirectionalParameterType->EVTargetEnergyRequest_isUsed = 1u;
					grammarID = 629;
					break;
				case 1:
					errn = decode_iso2PhysicalValueType(stream, &iso2AC_EVBidirectionalParameterType->EVMaximumEnergyRequest);
					iso2AC_EVBidirectionalParameterType->EVMaximumEnergyRequest_isUsed = 1u;
					grammarID = 630;
					break;
				case 2:
					errn = decode_iso2PhysicalValueType(stream, &iso2AC_EVBidirectionalParameterType->EVMinimumEnergyRequest);
					iso2AC_EVBidirectionalParameterType->EVMinimumEnergyRequest_isUsed = 1u;
					grammarID = 631;
					break;
				case 3:
					errn = decode_iso2PhysicalValueType(stream, &iso2AC_EVBidirectionalParameterType->EVMaximumVoltage);
					grammarID = 632;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 629:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumEnergyRequest), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMinimumEnergyRequest), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumVoltage)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2AC_EVBidirectionalParameterType->EVMaximumEnergyRequest);
					iso2AC_EVBidirectionalParameterType->EVMaximumEnergyRequest_isUsed = 1u;
					grammarID = 630;
					break;
				case 1:
					errn = decode_iso2PhysicalValueType(stream, &iso2AC_EVBidirectionalParameterType->EVMinimumEnergyRequest);
					iso2AC_EVBidirectionalParameterType->EVMinimumEnergyRequest_isUsed = 1u;
					grammarID = 631;
					break;
				case 2:
					errn = decode_iso2PhysicalValueType(stream, &iso2AC_EVBidirectionalParameterType->EVMaximumVoltage);
					grammarID = 632;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 630:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMinimumEnergyRequest), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumVoltage)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2AC_EVBidirectionalParameterType->EVMinimumEnergyRequest);
					iso2AC_EVBidirectionalParameterType->EVMinimumEnergyRequest_isUsed = 1u;
					grammarID = 631;
					break;
				case 1:
					errn = decode_iso2PhysicalValueType(stream, &iso2AC_EVBidirectionalParameterType->EVMaximumVoltage);
					grammarID = 632;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 631:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumVoltage)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2AC_EVBidirectionalParameterType->EVMaximumVoltage);
					grammarID = 632;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 632:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumDischargePower)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2AC_EVBidirectionalParameterType->EVMaximumDischargePower);
					grammarID = 633;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 633:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumDischargeCurrent)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2AC_EVBidirectionalParameterType->EVMaximumDischargeCurrent);
					grammarID = 634;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 634:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMinimumDischargeCurrent)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2AC_EVBidirectionalParameterType->EVMinimumDischargeCurrent);
					grammarID = 3;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,DC_BidirectionalControlReqType',  base type name='ChargeLoopReqType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(("urn:iso:15118:2:2016:MsgBody":EVTargetEnergyRequest,"urn:iso:15118:2:2016:MsgBody":EVMaximumEnergyRequest{0-1},"urn:iso:15118:2:2016:MsgBody":EVMinimumEnergyRequest{0-1},"urn:iso:15118:2:2016:MsgBody":DisplayParameters{0-1}),("urn:iso:15118:2:2016:MsgBody":EVTargetCurrent,"urn:iso:15118:2:2016:MsgBody":EVTargetVoltage,"urn:iso:15118:2:2016:MsgBody":EVMaximumVoltage,"urn:iso:15118:2:2016:MsgBody":EVMinimumVoltage,"urn:iso:15118:2:2016:MsgBody":EVMaximumChargeCurrent,"urn:iso:15118:2:2016:MsgBody":EVMaximumDischargeCurrent{0-1},"urn:iso:15118:2:2016:MsgBody":EVMaximumChargePower{0-1},"urn:iso:15118:2:2016:MsgBody":EVMaximumDischargePower{0-1}))',  derivedBy='EXTENSION'.  */
static int decode_iso2DC_BidirectionalControlReqType(bitstream_t* stream, struct iso2DC_BidirectionalControlReqType* iso2DC_BidirectionalControlReqType) {
	int grammarID = 635;
	int done = 0;
	
	init_iso2DC_BidirectionalControlReqType(iso2DC_BidirectionalControlReqType);
	
	while(!done) {
		switch(grammarID) {
		case 635:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVTargetEnergyRequest)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_BidirectionalControlReqType->EVTargetEnergyRequest);
					grammarID = 636;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 636:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMaximumEnergyRequest), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMinimumEnergyRequest), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}DisplayParameters), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVTargetCurrent)] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_BidirectionalControlReqType->EVMaximumEnergyRequest);
					iso2DC_BidirectionalControlReqType->EVMaximumEnergyRequest_isUsed = 1u;
					grammarID = 637;
					break;
				case 1:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_BidirectionalControlReqType->EVMinimumEnergyRequest);
					iso2DC_BidirectionalControlReqType->EVMinimumEnergyRequest_isUsed = 1u;
					grammarID = 638;
					break;
				case 2:
					errn = decode_iso2DisplayParametersType(stream, &iso2DC_BidirectionalControlReqType->DisplayParameters);
					iso2DC_BidirectionalControlReqType->DisplayParameters_isUsed = 1u;
					grammarID = 639;
					break;
				case 3:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_BidirectionalControlReqType->EVTargetCurrent);
					grammarID = 640;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 637:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMinimumEnergyRequest), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}DisplayParameters), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVTargetCurrent)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_BidirectionalControlReqType->EVMinimumEnergyRequest);
					iso2DC_BidirectionalControlReqType->EVMinimumEnergyRequest_isUsed = 1u;
					grammarID = 638;
					break;
				case 1:
					errn = decode_iso2DisplayParametersType(stream, &iso2DC_BidirectionalControlReqType->DisplayParameters);
					iso2DC_BidirectionalControlReqType->DisplayParameters_isUsed = 1u;
					grammarID = 639;
					break;
				case 2:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_BidirectionalControlReqType->EVTargetCurrent);
					grammarID = 640;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 638:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}DisplayParameters), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVTargetCurrent)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2DisplayParametersType(stream, &iso2DC_BidirectionalControlReqType->DisplayParameters);
					iso2DC_BidirectionalControlReqType->DisplayParameters_isUsed = 1u;
					grammarID = 639;
					break;
				case 1:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_BidirectionalControlReqType->EVTargetCurrent);
					grammarID = 640;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 639:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVTargetCurrent)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_BidirectionalControlReqType->EVTargetCurrent);
					grammarID = 640;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 640:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVTargetVoltage)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_BidirectionalControlReqType->EVTargetVoltage);
					grammarID = 641;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 641:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMaximumVoltage)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_BidirectionalControlReqType->EVMaximumVoltage);
					grammarID = 642;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 642:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMinimumVoltage)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_BidirectionalControlReqType->EVMinimumVoltage);
					grammarID = 643;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 643:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMaximumChargeCurrent)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_BidirectionalControlReqType->EVMaximumChargeCurrent);
					grammarID = 644;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 644:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMaximumDischargeCurrent), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMaximumChargePower), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMaximumDischargePower), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_BidirectionalControlReqType->EVMaximumDischargeCurrent);
					iso2DC_BidirectionalControlReqType->EVMaximumDischargeCurrent_isUsed = 1u;
					grammarID = 645;
					break;
				case 1:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_BidirectionalControlReqType->EVMaximumChargePower);
					iso2DC_BidirectionalControlReqType->EVMaximumChargePower_isUsed = 1u;
					grammarID = 646;
					break;
				case 2:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_BidirectionalControlReqType->EVMaximumDischargePower);
					iso2DC_BidirectionalControlReqType->EVMaximumDischargePower_isUsed = 1u;
					grammarID = 3;
					break;
				case 3:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 645:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMaximumChargePower), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMaximumDischargePower), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_BidirectionalControlReqType->EVMaximumChargePower);
					iso2DC_BidirectionalControlReqType->EVMaximumChargePower_isUsed = 1u;
					grammarID = 646;
					break;
				case 1:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_BidirectionalControlReqType->EVMaximumDischargePower);
					iso2DC_BidirectionalControlReqType->EVMaximumDischargePower_isUsed = 1u;
					grammarID = 3;
					break;
				case 2:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 646:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMaximumDischargePower), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_BidirectionalControlReqType->EVMaximumDischargePower);
					iso2DC_BidirectionalControlReqType->EVMaximumDischargePower_isUsed = 1u;
					grammarID = 3;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,CertificateUpdateReqType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgBody":ContractSignatureCertChain,"urn:iso:15118:2:2016:MsgBody":eMAID,"urn:iso:15118:2:2016:MsgBody":ListOfRootCertificateIDs)',  derivedBy='EXTENSION'.  */
static int decode_iso2CertificateUpdateReqType(bitstream_t* stream, struct iso2CertificateUpdateReqType* iso2CertificateUpdateReqType) {
	int grammarID = 647;
	int done = 0;
	
	init_iso2CertificateUpdateReqType(iso2CertificateUpdateReqType);
	
	while(!done) {
		switch(grammarID) {
		case 647:
			/* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2016:MsgBody}Id)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decodeUnsignedInteger16(stream, &iso2CertificateUpdateReqType->Id.charactersLen);
					if (errn == 0) {
						if (iso2CertificateUpdateReqType->Id.charactersLen >= 2) {
							iso2CertificateUpdateReqType->Id.charactersLen = (uint16_t)(iso2CertificateUpdateReqType->Id.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2CertificateUpdateReqType->Id.charactersLen, iso2CertificateUpdateReqType->Id.characters, iso2CertificateUpdateReqType_Id_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					grammarID = 648;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 648:
			/* StartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ContractSignatureCertChain)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2CertificateChainType(stream, &iso2CertificateUpdateReqType->ContractSignatureCertChain);
					grammarID = 649;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 649:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}eMAID)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* First(xsi:type)StartTag[CHARACTERS[STRING]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2CertificateUpdateReqType->eMAID.charactersLen);
							if (errn == 0) {
								if (iso2CertificateUpdateReqType->eMAID.charactersLen >= 2) {
									iso2CertificateUpdateReqType->eMAID.charactersLen = (uint16_t)(iso2CertificateUpdateReqType->eMAID.charactersLen - 2); /* string table miss */
									errn = decodeCharacters(stream, iso2CertificateUpdateReqType->eMAID.charactersLen, iso2CertificateUpdateReqType->eMAID.characters, iso2CertificateUpdateReqType_eMAID_CHARACTERS_SIZE);
								} else {
									/* string table hit */
									errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
								}
							}
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}eMAID) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 650;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 650:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ListOfRootCertificateIDs)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2ListOfRootCertificateIDsType(stream, &iso2CertificateUpdateReqType->ListOfRootCertificateIDs);
					grammarID = 3;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,ConsumptionCostType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgDataTypes":startValue,"urn:iso:15118:2:2016:MsgDataTypes":Cost{1-3})',  derivedBy='RESTRICTION'.  */
static int decode_iso2ConsumptionCostType(bitstream_t* stream, struct iso2ConsumptionCostType* iso2ConsumptionCostType) {
	int grammarID = 651;
	int done = 0;
	
	init_iso2ConsumptionCostType(iso2ConsumptionCostType);
	
	while(!done) {
		switch(grammarID) {
		case 651:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}startValue)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2ConsumptionCostType->startValue);
					grammarID = 652;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 652:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Cost)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ConsumptionCostType->Cost.arrayLen < iso2ConsumptionCostType_Cost_ARRAY_SIZE) {
						errn = decode_iso2CostType(stream, &iso2ConsumptionCostType->Cost.array[iso2ConsumptionCostType->Cost.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 653;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 653:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Cost), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ConsumptionCostType->Cost.arrayLen < iso2ConsumptionCostType_Cost_ARRAY_SIZE) {
						errn = decode_iso2CostType(stream, &iso2ConsumptionCostType->Cost.array[iso2ConsumptionCostType->Cost.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 654;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 654:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Cost), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ConsumptionCostType->Cost.arrayLen < iso2ConsumptionCostType_Cost_ARRAY_SIZE) {
						errn = decode_iso2CostType(stream, &iso2ConsumptionCostType->Cost.array[iso2ConsumptionCostType->Cost.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 3;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,SAScheduleListType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgDataTypes":SAScheduleTuple{1-3})',  derivedBy='RESTRICTION'.  */
static int decode_iso2SAScheduleListType(bitstream_t* stream, struct iso2SAScheduleListType* iso2SAScheduleListType) {
	int grammarID = 655;
	int done = 0;
	
	init_iso2SAScheduleListType(iso2SAScheduleListType);
	
	while(!done) {
		switch(grammarID) {
		case 655:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SAScheduleTuple)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SAScheduleListType->SAScheduleTuple.arrayLen < iso2SAScheduleListType_SAScheduleTuple_ARRAY_SIZE) {
						errn = decode_iso2SAScheduleTupleType(stream, &iso2SAScheduleListType->SAScheduleTuple.array[iso2SAScheduleListType->SAScheduleTuple.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 656;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 656:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SAScheduleTuple), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SAScheduleListType->SAScheduleTuple.arrayLen < iso2SAScheduleListType_SAScheduleTuple_ARRAY_SIZE) {
						errn = decode_iso2SAScheduleTupleType(stream, &iso2SAScheduleListType->SAScheduleTuple.array[iso2SAScheduleListType->SAScheduleTuple.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 657;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 657:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SAScheduleTuple), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SAScheduleListType->SAScheduleTuple.arrayLen < iso2SAScheduleListType_SAScheduleTuple_ARRAY_SIZE) {
						errn = decode_iso2SAScheduleTupleType(stream, &iso2SAScheduleListType->SAScheduleTuple.array[iso2SAScheduleListType->SAScheduleTuple.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 3;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,MagneticVectorSetupType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgDataTypes":GAID,"urn:iso:15118:2:2016:MsgDataTypes":FrequencyChannel)',  derivedBy='RESTRICTION'.  */
static int decode_iso2MagneticVectorSetupType(bitstream_t* stream, struct iso2MagneticVectorSetupType* iso2MagneticVectorSetupType) {
	int grammarID = 658;
	int done = 0;
	
	init_iso2MagneticVectorSetupType(iso2MagneticVectorSetupType);
	
	while(!done) {
		switch(grammarID) {
		case 658:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}GAID)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[STRING]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2MagneticVectorSetupType->GAID.charactersLen);
							if (errn == 0) {
								if (iso2MagneticVectorSetupType->GAID.charactersLen >= 2) {
									iso2MagneticVectorSetupType->GAID.charactersLen = (uint16_t)(iso2MagneticVectorSetupType->GAID.charactersLen - 2); /* string table miss */
									errn = decodeCharacters(stream, iso2MagneticVectorSetupType->GAID.charactersLen, iso2MagneticVectorSetupType->GAID.characters, iso2MagneticVectorSetupType_GAID_CHARACTERS_SIZE);
								} else {
									/* string table hit */
									errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
								}
							}
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}GAID) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 659;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 659:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}FrequencyChannel)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger32(stream, &iso2MagneticVectorSetupType->FrequencyChannel);
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}FrequencyChannel) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,LFA_EVSEFinePositioningSetupParametersType',  base type name='EVSEFinePositioningSetupParametersType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgDataTypes":NumberOfSensors,"urn:iso:15118:2:2016:MsgDataTypes":SensorList,"urn:iso:15118:2:2016:MsgDataTypes":SensorOrder,"urn:iso:15118:2:2016:MsgDataTypes":SignalPulseDuration,"urn:iso:15118:2:2016:MsgDataTypes":SignalSeparationTime,"urn:iso:15118:2:2016:MsgDataTypes":PackageSeparationTime,"urn:iso:15118:2:2016:MsgDataTypes":AlignmentOffset,"urn:iso:15118:2:2016:MsgDataTypes":SignalFrequency)',  derivedBy='EXTENSION'.  */
static int decode_iso2LFA_EVSEFinePositioningSetupParametersType(bitstream_t* stream, struct iso2LFA_EVSEFinePositioningSetupParametersType* iso2LFA_EVSEFinePositioningSetupParametersType) {
	int grammarID = 660;
	int done = 0;
	
	init_iso2LFA_EVSEFinePositioningSetupParametersType(iso2LFA_EVSEFinePositioningSetupParametersType);
	
	while(!done) {
		switch(grammarID) {
		case 660:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}NumberOfSensors)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
							iso2LFA_EVSEFinePositioningSetupParametersType->NumberOfSensors = (uint8_t)(uint32 + 0);
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}NumberOfSensors) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 661;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 661:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorList)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2SensorListType(stream, &iso2LFA_EVSEFinePositioningSetupParametersType->SensorList);
					grammarID = 662;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 662:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorOrder)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2SensorOrderListType(stream, &iso2LFA_EVSEFinePositioningSetupParametersType->SensorOrder);
					grammarID = 663;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 663:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SignalPulseDuration)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
							iso2LFA_EVSEFinePositioningSetupParametersType->SignalPulseDuration = (uint8_t)(uint32 + 0);
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SignalPulseDuration) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 664;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 664:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SignalSeparationTime)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
							iso2LFA_EVSEFinePositioningSetupParametersType->SignalSeparationTime = (uint8_t)(uint32 + 0);
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SignalSeparationTime) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 665;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 665:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}PackageSeparationTime)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
							iso2LFA_EVSEFinePositioningSetupParametersType->PackageSeparationTime = (uint8_t)(uint32 + 0);
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}PackageSeparationTime) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 666;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 666:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}AlignmentOffset)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2LFA_EVSEFinePositioningSetupParametersType->AlignmentOffset);
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}AlignmentOffset) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 667;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 667:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SignalFrequency)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2LFA_EVSEFinePositioningSetupParametersType->SignalFrequency);
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SignalFrequency) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,PaymentOptionListType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgDataTypes":PaymentOption{1-2})',  derivedBy='RESTRICTION'.  */
static int decode_iso2PaymentOptionListType(bitstream_t* stream, struct iso2PaymentOptionListType* iso2PaymentOptionListType) {
	int grammarID = 668;
	int done = 0;
	
	init_iso2PaymentOptionListType(iso2PaymentOptionListType);
	
	while(!done) {
		switch(grammarID) {
		case 668:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}PaymentOption)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2PaymentOptionListType->PaymentOption.arrayLen < iso2PaymentOptionListType_PaymentOption_ARRAY_SIZE) {
						/* FirstStartTag[CHARACTERS[ENUMERATION]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 1, &uint32);
								iso2PaymentOptionListType->PaymentOption.array[iso2PaymentOptionListType->PaymentOption.arrayLen] = (iso2paymentOptionType) uint32;
								iso2PaymentOptionListType->PaymentOption.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}PaymentOption) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 669;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 669:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}PaymentOption), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2PaymentOptionListType->PaymentOption.arrayLen < iso2PaymentOptionListType_PaymentOption_ARRAY_SIZE) {
						/* FirstStartTag[CHARACTERS[ENUMERATION]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 1, &uint32);
								iso2PaymentOptionListType->PaymentOption.array[iso2PaymentOptionListType->PaymentOption.arrayLen] = (iso2paymentOptionType) uint32;
								iso2PaymentOptionListType->PaymentOption.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}PaymentOption) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,LFA_EVSEFinePositioningParametersType',  base type name='EVSEFinePositioningParametersType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgDataTypes":NumberOfSignalPackages,"urn:iso:15118:2:2016:MsgDataTypes":SensorPackageList)',  derivedBy='EXTENSION'.  */
static int decode_iso2LFA_EVSEFinePositioningParametersType(bitstream_t* stream, struct iso2LFA_EVSEFinePositioningParametersType* iso2LFA_EVSEFinePositioningParametersType) {
	int grammarID = 670;
	int done = 0;
	
	init_iso2LFA_EVSEFinePositioningParametersType(iso2LFA_EVSEFinePositioningParametersType);
	
	while(!done) {
		switch(grammarID) {
		case 670:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}NumberOfSignalPackages)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
							iso2LFA_EVSEFinePositioningParametersType->NumberOfSignalPackages = (uint8_t)(uint32 + 0);
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}NumberOfSignalPackages) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 671;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 671:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackageList)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2SensorPackageListType(stream, &iso2LFA_EVSEFinePositioningParametersType->SensorPackageList);
					grammarID = 3;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,RelativeTimeIntervalType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgDataTypes":start,"urn:iso:15118:2:2016:MsgDataTypes":duration{0-1})',  derivedBy='RESTRICTION'.  */
static int decode_iso2RelativeTimeIntervalType(bitstream_t* stream, struct iso2RelativeTimeIntervalType* iso2RelativeTimeIntervalType) {
	int grammarID = 672;
	int done = 0;
	
	init_iso2RelativeTimeIntervalType(iso2RelativeTimeIntervalType);
	
	while(!done) {
		switch(grammarID) {
		case 672:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}start)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger32(stream, &iso2RelativeTimeIntervalType->start);
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}start) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 673;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 673:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}duration), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger32(stream, &iso2RelativeTimeIntervalType->duration);
							iso2RelativeTimeIntervalType->duration_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}duration) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,EVFinePositioningParametersType',  base type name='anyType',  content type='EMPTY',  isAbstract='true',  hasTypeId='false',  final='0',  block='0',  derivedBy='RESTRICTION'.  */
static int decode_iso2EVFinePositioningParametersType(bitstream_t* stream, struct iso2EVFinePositioningParametersType* iso2EVFinePositioningParametersType) {
	int grammarID = 674;
	int done = 0;
	
	init_iso2EVFinePositioningParametersType(iso2EVFinePositioningParametersType);
	
	while(!done) {
		switch(grammarID) {
		case 674:
			/* FirstStartTag[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,AlignmentCheckReqType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgBody":EVProcessing,"urn:iso:15118:2:2016:MsgBody":AlignmentCheckParameters{0-1})',  derivedBy='EXTENSION'.  */
static int decode_iso2AlignmentCheckReqType(bitstream_t* stream, struct iso2AlignmentCheckReqType* iso2AlignmentCheckReqType) {
	int grammarID = 675;
	int done = 0;
	
	init_iso2AlignmentCheckReqType(iso2AlignmentCheckReqType);
	
	while(!done) {
		switch(grammarID) {
		case 675:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVProcessing)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
							iso2AlignmentCheckReqType->EVProcessing = (iso2EVSEProcessingType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVProcessing) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 676;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 676:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}AlignmentCheckParameters), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2ParameterSetType(stream, &iso2AlignmentCheckReqType->AlignmentCheckParameters);
					iso2AlignmentCheckReqType->AlignmentCheckParameters_isUsed = 1u;
					grammarID = 3;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,CertificateInstallationReqType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgBody":OEMProvisioningCert,"urn:iso:15118:2:2016:MsgBody":ListOfRootCertificateIDs)',  derivedBy='EXTENSION'.  */
static int decode_iso2CertificateInstallationReqType(bitstream_t* stream, struct iso2CertificateInstallationReqType* iso2CertificateInstallationReqType) {
	int grammarID = 677;
	int done = 0;
	
	init_iso2CertificateInstallationReqType(iso2CertificateInstallationReqType);
	
	while(!done) {
		switch(grammarID) {
		case 677:
			/* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2016:MsgBody}Id)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decodeUnsignedInteger16(stream, &iso2CertificateInstallationReqType->Id.charactersLen);
					if (errn == 0) {
						if (iso2CertificateInstallationReqType->Id.charactersLen >= 2) {
							iso2CertificateInstallationReqType->Id.charactersLen = (uint16_t)(iso2CertificateInstallationReqType->Id.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2CertificateInstallationReqType->Id.charactersLen, iso2CertificateInstallationReqType->Id.characters, iso2CertificateInstallationReqType_Id_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					grammarID = 678;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 678:
			/* StartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}OEMProvisioningCert)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2CertificateInstallationReqType->OEMProvisioningCert.bytesLen);
							if (errn == 0) {
								errn =  (iso2CertificateInstallationReqType->OEMProvisioningCert.bytesLen) <= iso2CertificateInstallationReqType_OEMProvisioningCert_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
							}
							if (errn == 0) {
								errn = decodeBytes(stream, iso2CertificateInstallationReqType->OEMProvisioningCert.bytesLen, iso2CertificateInstallationReqType->OEMProvisioningCert.bytes);
							}
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}OEMProvisioningCert) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 650;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 650:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ListOfRootCertificateIDs)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2ListOfRootCertificateIDsType(stream, &iso2CertificateInstallationReqType->ListOfRootCertificateIDs);
					grammarID = 3;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='http://www.w3.org/2000/09/xmldsig#,TransformsType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("http://www.w3.org/2000/09/xmldsig#":Transform{1-UNBOUNDED})',  derivedBy='RESTRICTION'.  */
static int decode_iso2TransformsType(bitstream_t* stream, struct iso2TransformsType* iso2TransformsType) {
	int grammarID = 679;
	int done = 0;
	
	init_iso2TransformsType(iso2TransformsType);
	
	while(!done) {
		switch(grammarID) {
		case 679:
			/* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2TransformsType->Transform.arrayLen < iso2TransformsType_Transform_ARRAY_SIZE) {
						errn = decode_iso2TransformType(stream, &iso2TransformsType->Transform.array[iso2TransformsType->Transform.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 680;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 680:
			/* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2TransformsType->Transform.arrayLen < iso2TransformsType_Transform_ARRAY_SIZE) {
						errn = decode_iso2TransformType(stream, &iso2TransformsType->Transform.array[iso2TransformsType->Transform.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 680;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='http://www.w3.org/2000/09/xmldsig#,ObjectType',  base type name='anyType',  content type='MIXED',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='((WC[##any])){0-UNBOUNDED}',  derivedBy='RESTRICTION'.  */
static int decode_iso2ObjectType(bitstream_t* stream, struct iso2ObjectType* iso2ObjectType) {
	int grammarID = 681;
	int done = 0;
	
	init_iso2ObjectType(iso2ObjectType);
	
	while(!done) {
		switch(grammarID) {
		case 681:
			/* FirstStartTag[ATTRIBUTE[STRING](Encoding), ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING](MimeType), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decodeUnsignedInteger16(stream, &iso2ObjectType->Encoding.charactersLen);
					if (errn == 0) {
						if (iso2ObjectType->Encoding.charactersLen >= 2) {
							iso2ObjectType->Encoding.charactersLen = (uint16_t)(iso2ObjectType->Encoding.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2ObjectType->Encoding.charactersLen, iso2ObjectType->Encoding.characters, iso2ObjectType_Encoding_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					iso2ObjectType->Encoding_isUsed = 1u;
					grammarID = 682;
					break;
				case 1:
					errn = decodeUnsignedInteger16(stream, &iso2ObjectType->Id.charactersLen);
					if (errn == 0) {
						if (iso2ObjectType->Id.charactersLen >= 2) {
							iso2ObjectType->Id.charactersLen = (uint16_t)(iso2ObjectType->Id.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2ObjectType->Id.charactersLen, iso2ObjectType->Id.characters, iso2ObjectType_Id_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					iso2ObjectType->Id_isUsed = 1u;
					grammarID = 683;
					break;
				case 2:
					errn = decodeUnsignedInteger16(stream, &iso2ObjectType->MimeType.charactersLen);
					if (errn == 0) {
						if (iso2ObjectType->MimeType.charactersLen >= 2) {
							iso2ObjectType->MimeType.charactersLen = (uint16_t)(iso2ObjectType->MimeType.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2ObjectType->MimeType.charactersLen, iso2ObjectType->MimeType.characters, iso2ObjectType_MimeType_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					iso2ObjectType->MimeType_isUsed = 1u;
					grammarID = 684;
					break;
				case 3:
					errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					/* TODO unsupported event : START_ELEMENT_GENERIC */
					grammarID = 685;
					break;
				case 4:
					done = 1;
					grammarID = 4;
					break;
				case 5:
					errn = decodeUnsignedInteger16(stream, &iso2ObjectType->ANY.charactersLen);
					if (errn == 0) {
						if (iso2ObjectType->ANY.charactersLen >= 2) {
							iso2ObjectType->ANY.charactersLen = (uint16_t)(iso2ObjectType->ANY.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2ObjectType->ANY.charactersLen, iso2ObjectType->ANY.characters, iso2ObjectType_ANY_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					iso2ObjectType->ANY_isUsed = 1u;
					grammarID = 685;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 682:
			/* StartTag[ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING](MimeType), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decodeUnsignedInteger16(stream, &iso2ObjectType->Id.charactersLen);
					if (errn == 0) {
						if (iso2ObjectType->Id.charactersLen >= 2) {
							iso2ObjectType->Id.charactersLen = (uint16_t)(iso2ObjectType->Id.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2ObjectType->Id.charactersLen, iso2ObjectType->Id.characters, iso2ObjectType_Id_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					iso2ObjectType->Id_isUsed = 1u;
					grammarID = 683;
					break;
				case 1:
					errn = decodeUnsignedInteger16(stream, &iso2ObjectType->MimeType.charactersLen);
					if (errn == 0) {
						if (iso2ObjectType->MimeType.charactersLen >= 2) {
							iso2ObjectType->MimeType.charactersLen = (uint16_t)(iso2ObjectType->MimeType.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2ObjectType->MimeType.charactersLen, iso2ObjectType->MimeType.characters, iso2ObjectType_MimeType_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					iso2ObjectType->MimeType_isUsed = 1u;
					grammarID = 684;
					break;
				case 2:
					errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					/* TODO unsupported event : START_ELEMENT_GENERIC */
					grammarID = 685;
					break;
				case 3:
					done = 1;
					grammarID = 4;
					break;
				case 4:
					errn = decodeUnsignedInteger16(stream, &iso2ObjectType->ANY.charactersLen);
					if (errn == 0) {
						if (iso2ObjectType->ANY.charactersLen >= 2) {
							iso2ObjectType->ANY.charactersLen = (uint16_t)(iso2ObjectType->ANY.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2ObjectType->ANY.charactersLen, iso2ObjectType->ANY.characters, iso2ObjectType_ANY_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					iso2ObjectType->ANY_isUsed = 1u;
					grammarID = 685;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 683:
			/* StartTag[ATTRIBUTE[STRING](MimeType), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decodeUnsignedInteger16(stream, &iso2ObjectType->MimeType.charactersLen);
					if (errn == 0) {
						if (iso2ObjectType->MimeType.charactersLen >= 2) {
							iso2ObjectType->MimeType.charactersLen = (uint16_t)(iso2ObjectType->MimeType.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2ObjectType->MimeType.charactersLen, iso2ObjectType->MimeType.characters, iso2ObjectType_MimeType_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					iso2ObjectType->MimeType_isUsed = 1u;
					grammarID = 684;
					break;
				case 1:
					errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					/* TODO unsupported event : START_ELEMENT_GENERIC */
					grammarID = 685;
					break;
				case 2:
					done = 1;
					grammarID = 4;
					break;
				case 3:
					errn = decodeUnsignedInteger16(stream, &iso2ObjectType->ANY.charactersLen);
					if (errn == 0) {
						if (iso2ObjectType->ANY.charactersLen >= 2) {
							iso2ObjectType->ANY.charactersLen = (uint16_t)(iso2ObjectType->ANY.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2ObjectType->ANY.charactersLen, iso2ObjectType->ANY.characters, iso2ObjectType_ANY_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					iso2ObjectType->ANY_isUsed = 1u;
					grammarID = 685;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 684:
			/* StartTag[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					/* TODO unsupported event : START_ELEMENT_GENERIC */
					grammarID = 685;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				case 2:
					errn = decodeUnsignedInteger16(stream, &iso2ObjectType->ANY.charactersLen);
					if (errn == 0) {
						if (iso2ObjectType->ANY.charactersLen >= 2) {
							iso2ObjectType->ANY.charactersLen = (uint16_t)(iso2ObjectType->ANY.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2ObjectType->ANY.charactersLen, iso2ObjectType->ANY.characters, iso2ObjectType_ANY_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					iso2ObjectType->ANY_isUsed = 1u;
					grammarID = 685;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 685:
			/* Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					/* TODO unsupported event : START_ELEMENT_GENERIC */
					grammarID = 685;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				case 2:
					errn = decodeUnsignedInteger16(stream, &iso2ObjectType->ANY.charactersLen);
					if (errn == 0) {
						if (iso2ObjectType->ANY.charactersLen >= 2) {
							iso2ObjectType->ANY.charactersLen = (uint16_t)(iso2ObjectType->ANY.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2ObjectType->ANY.charactersLen, iso2ObjectType->ANY.characters, iso2ObjectType_ANY_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					iso2ObjectType->ANY_isUsed = 1u;
					grammarID = 685;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,SensorOrderListType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgDataTypes":SensorPosition{1-255})',  derivedBy='RESTRICTION'.  */
static int decode_iso2SensorOrderListType(bitstream_t* stream, struct iso2SensorOrderListType* iso2SensorOrderListType) {
	int grammarID = 686;
	int done = 0;
	
	init_iso2SensorOrderListType(iso2SensorOrderListType);
	
	while(!done) {
		switch(grammarID) {
		case 686:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 687;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 687:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 688;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 688:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 689;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 689:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 690;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 690:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 691;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 691:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 692;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 692:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 693;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 693:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 694;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 694:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 695;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 695:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 696;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 696:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 697;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 697:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 698;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 698:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 699;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 699:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 700;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 700:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 701;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 701:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 702;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 702:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 703;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 703:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 704;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 704:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 705;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 705:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 706;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 706:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 707;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 707:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 708;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 708:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 709;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 709:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 710;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 710:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 711;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 711:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 712;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 712:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 713;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 713:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 714;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 714:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 715;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 715:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 716;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 716:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 717;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 717:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 718;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 718:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 719;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 719:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 720;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 720:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 721;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 721:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 722;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 722:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 723;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 723:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 724;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 724:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 725;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 725:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 726;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 726:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 727;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 727:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 728;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 728:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 729;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 729:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 730;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 730:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 731;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 731:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 732;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 732:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 733;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 733:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 734;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 734:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 735;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 735:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 736;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 736:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 737;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 737:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 738;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 738:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 739;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 739:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 740;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 740:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 741;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 741:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 742;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 742:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 743;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 743:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 744;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 744:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 745;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 745:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 746;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 746:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 747;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 747:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 748;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 748:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 749;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 749:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 750;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 750:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 751;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 751:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 752;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 752:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 753;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 753:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 754;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 754:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 755;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 755:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 756;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 756:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 757;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 757:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 758;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 758:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 759;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 759:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 760;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 760:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 761;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 761:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 762;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 762:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 763;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 763:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 764;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 764:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 765;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 765:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 766;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 766:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 767;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 767:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 768;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 768:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 769;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 769:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 770;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 770:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 771;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 771:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 772;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 772:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 773;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 773:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 774;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 774:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 775;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 775:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 776;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 776:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 777;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 777:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 778;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 778:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 779;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 779:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 780;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 780:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 781;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 781:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 782;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 782:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 783;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 783:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 784;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 784:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 785;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 785:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 786;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 786:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 787;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 787:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 788;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 788:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 789;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 789:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 790;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 790:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 791;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 791:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 792;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 792:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 793;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 793:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 794;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 794:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 795;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 795:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 796;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 796:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 797;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 797:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 798;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 798:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 799;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 799:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 800;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 800:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 801;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 801:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 802;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 802:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 803;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 803:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 804;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 804:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 805;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 805:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 806;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 806:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 807;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 807:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 808;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 808:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 809;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 809:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 810;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 810:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 811;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 811:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 812;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 812:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 813;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 813:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 814;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 814:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 815;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 815:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 816;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 816:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 817;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 817:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 818;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 818:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 819;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 819:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 820;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 820:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 821;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 821:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 822;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 822:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 823;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 823:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 824;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 824:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 825;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 825:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 826;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 826:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 827;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 827:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 828;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 828:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 829;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 829:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 830;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 830:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 831;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 831:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 832;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 832:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 833;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 833:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 834;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 834:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 835;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 835:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 836;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 836:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 837;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 837:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 838;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 838:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 839;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 839:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 840;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 840:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 841;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 841:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 842;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 842:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 843;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 843:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 844;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 844:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 845;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 845:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 846;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 846:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 847;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 847:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 848;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 848:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 849;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 849:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 850;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 850:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 851;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 851:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 852;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 852:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 853;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 853:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 854;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 854:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 855;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 855:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 856;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 856:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 857;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 857:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 858;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 858:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 859;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 859:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 860;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 860:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 861;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 861:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 862;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 862:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 863;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 863:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 864;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 864:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 865;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 865:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 866;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 866:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 867;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 867:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 868;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 868:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 869;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 869:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 870;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 870:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 871;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 871:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 872;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 872:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 873;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 873:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 874;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 874:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 875;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 875:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 876;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 876:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 877;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 877:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 878;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 878:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 879;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 879:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 880;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 880:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 881;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 881:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 882;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 882:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 883;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 883:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 884;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 884:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 885;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 885:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 886;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 886:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 887;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 887:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 888;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 888:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 889;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 889:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 890;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 890:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 891;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 891:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 892;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 892:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 893;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 893:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 894;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 894:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 895;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 895:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 896;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 896:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 897;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 897:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 898;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 898:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 899;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 899:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 900;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 900:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 901;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 901:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 902;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 902:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 903;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 903:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 904;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 904:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 905;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 905:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 906;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 906:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 907;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 907:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 908;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 908:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 909;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 909:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 910;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 910:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 911;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 911:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 912;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 912:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 913;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 913:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 914;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 914:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 915;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 915:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 916;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 916:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 917;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 917:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 918;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 918:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 919;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 919:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 920;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 920:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 921;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 921:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 922;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 922:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 923;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 923:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 924;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 924:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 925;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 925:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 926;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 926:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 927;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 927:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 928;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 928:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 929;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 929:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 930;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 930:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 931;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 931:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 932;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 932:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 933;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 933:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 934;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 934:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 935;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 935:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 936;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 936:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 937;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 937:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 938;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 938:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 939;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 939:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 940;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 940:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorOrderListType->SensorPosition.arrayLen < iso2SensorOrderListType_SensorPosition_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
								iso2SensorOrderListType->SensorPosition.array[iso2SensorOrderListType->SensorPosition.arrayLen] = (uint8_t)(uint32 + 0);
								iso2SensorOrderListType->SensorPosition.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,ChargeParameterDiscoveryReqType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgBody":MaxSupportingPoints{0-1},"urn:iso:15118:2:2016:MsgDataTypes":EVEnergyTransferParameter,"urn:iso:15118:2:2016:MsgBody":MinimumPMaxRequest{0-1})',  derivedBy='EXTENSION'.  */
static int decode_iso2ChargeParameterDiscoveryReqType(bitstream_t* stream, struct iso2ChargeParameterDiscoveryReqType* iso2ChargeParameterDiscoveryReqType) {
	int grammarID = 941;
	int done = 0;
	
	init_iso2ChargeParameterDiscoveryReqType(iso2ChargeParameterDiscoveryReqType);
	
	while(!done) {
		switch(grammarID) {
		case 941:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}MaxSupportingPoints), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}AC_EVBidirectionalParameter), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}AC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}DC_EVBidirectionalParameter), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}DC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVEnergyTransferParameter), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}WPT_EVChargeParameter)] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 10, &(uint32));
							iso2ChargeParameterDiscoveryReqType->MaxSupportingPoints = (uint16_t)(uint32 + 12);
							iso2ChargeParameterDiscoveryReqType->MaxSupportingPoints_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}MaxSupportingPoints) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 942;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					errn = decode_iso2AC_EVBidirectionalParameterType(stream, &iso2ChargeParameterDiscoveryReqType->AC_EVBidirectionalParameter);
					iso2ChargeParameterDiscoveryReqType->AC_EVBidirectionalParameter_isUsed = 1u;
					grammarID = 943;
					break;
				case 2:
					errn = decode_iso2AC_EVChargeParameterType(stream, &iso2ChargeParameterDiscoveryReqType->AC_EVChargeParameter);
					iso2ChargeParameterDiscoveryReqType->AC_EVChargeParameter_isUsed = 1u;
					grammarID = 943;
					break;
				case 3:
					errn = decode_iso2DC_EVBidirectionalParameterType(stream, &iso2ChargeParameterDiscoveryReqType->DC_EVBidirectionalParameter);
					iso2ChargeParameterDiscoveryReqType->DC_EVBidirectionalParameter_isUsed = 1u;
					grammarID = 943;
					break;
				case 4:
					errn = decode_iso2DC_EVChargeParameterType(stream, &iso2ChargeParameterDiscoveryReqType->DC_EVChargeParameter);
					iso2ChargeParameterDiscoveryReqType->DC_EVChargeParameter_isUsed = 1u;
					grammarID = 943;
					break;
				case 5:
					errn = decode_iso2EVEnergyTransferParameterType(stream, &iso2ChargeParameterDiscoveryReqType->EVEnergyTransferParameter);
					iso2ChargeParameterDiscoveryReqType->EVEnergyTransferParameter_isUsed = 1u;
					grammarID = 943;
					break;
				case 6:
					errn = decode_iso2WPT_EVChargeParameterType(stream, &iso2ChargeParameterDiscoveryReqType->WPT_EVChargeParameter);
					iso2ChargeParameterDiscoveryReqType->WPT_EVChargeParameter_isUsed = 1u;
					grammarID = 943;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 942:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}AC_EVBidirectionalParameter), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}AC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}DC_EVBidirectionalParameter), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}DC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVEnergyTransferParameter), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}WPT_EVChargeParameter)] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2AC_EVBidirectionalParameterType(stream, &iso2ChargeParameterDiscoveryReqType->AC_EVBidirectionalParameter);
					iso2ChargeParameterDiscoveryReqType->AC_EVBidirectionalParameter_isUsed = 1u;
					grammarID = 943;
					break;
				case 1:
					errn = decode_iso2AC_EVChargeParameterType(stream, &iso2ChargeParameterDiscoveryReqType->AC_EVChargeParameter);
					iso2ChargeParameterDiscoveryReqType->AC_EVChargeParameter_isUsed = 1u;
					grammarID = 943;
					break;
				case 2:
					errn = decode_iso2DC_EVBidirectionalParameterType(stream, &iso2ChargeParameterDiscoveryReqType->DC_EVBidirectionalParameter);
					iso2ChargeParameterDiscoveryReqType->DC_EVBidirectionalParameter_isUsed = 1u;
					grammarID = 943;
					break;
				case 3:
					errn = decode_iso2DC_EVChargeParameterType(stream, &iso2ChargeParameterDiscoveryReqType->DC_EVChargeParameter);
					iso2ChargeParameterDiscoveryReqType->DC_EVChargeParameter_isUsed = 1u;
					grammarID = 943;
					break;
				case 4:
					errn = decode_iso2EVEnergyTransferParameterType(stream, &iso2ChargeParameterDiscoveryReqType->EVEnergyTransferParameter);
					iso2ChargeParameterDiscoveryReqType->EVEnergyTransferParameter_isUsed = 1u;
					grammarID = 943;
					break;
				case 5:
					errn = decode_iso2WPT_EVChargeParameterType(stream, &iso2ChargeParameterDiscoveryReqType->WPT_EVChargeParameter);
					iso2ChargeParameterDiscoveryReqType->WPT_EVChargeParameter_isUsed = 1u;
					grammarID = 943;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 943:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}MinimumPMaxRequest), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2MinimumPMaxRequestType(stream, &iso2ChargeParameterDiscoveryReqType->MinimumPMaxRequest);
					iso2ChargeParameterDiscoveryReqType->MinimumPMaxRequest_isUsed = 1u;
					grammarID = 3;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,ParameterType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgDataTypes":boolValue|"urn:iso:15118:2:2016:MsgDataTypes":byteValue|"urn:iso:15118:2:2016:MsgDataTypes":shortValue|"urn:iso:15118:2:2016:MsgDataTypes":intValue|"urn:iso:15118:2:2016:MsgDataTypes":physicalValue|"urn:iso:15118:2:2016:MsgDataTypes":stringValue)',  derivedBy='RESTRICTION'.  */
static int decode_iso2ParameterType(bitstream_t* stream, struct iso2ParameterType* iso2ParameterType) {
	int grammarID = 944;
	int done = 0;
	
	init_iso2ParameterType(iso2ParameterType);
	
	while(!done) {
		switch(grammarID) {
		case 944:
			/* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2016:MsgDataTypes}Name)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decodeUnsignedInteger16(stream, &iso2ParameterType->Name.charactersLen);
					if (errn == 0) {
						if (iso2ParameterType->Name.charactersLen >= 2) {
							iso2ParameterType->Name.charactersLen = (uint16_t)(iso2ParameterType->Name.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2ParameterType->Name.charactersLen, iso2ParameterType->Name.characters, iso2ParameterType_Name_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					grammarID = 945;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 945:
			/* StartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}boolValue), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}byteValue), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}shortValue), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}intValue), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}physicalValue), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}stringValue)] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[BOOLEAN]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeBoolean(stream, &iso2ParameterType->boolValue);
							iso2ParameterType->boolValue_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}boolValue) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
							iso2ParameterType->byteValue = (int8_t)(uint32 -128);
							iso2ParameterType->byteValue_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}byteValue) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 2:
					/* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeInteger16(stream, &iso2ParameterType->shortValue);
							iso2ParameterType->shortValue_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}shortValue) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 3:
					/* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeInteger32(stream, &iso2ParameterType->intValue);
							iso2ParameterType->intValue_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}intValue) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 4:
					errn = decode_iso2PhysicalValueType(stream, &iso2ParameterType->physicalValue);
					iso2ParameterType->physicalValue_isUsed = 1u;
					grammarID = 3;
					break;
				case 5:
					/* First(xsi:type)StartTag[CHARACTERS[STRING]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2ParameterType->stringValue.charactersLen);
							if (errn == 0) {
								if (iso2ParameterType->stringValue.charactersLen >= 2) {
									iso2ParameterType->stringValue.charactersLen = (uint16_t)(iso2ParameterType->stringValue.charactersLen - 2); /* string table miss */
									errn = decodeCharacters(stream, iso2ParameterType->stringValue.charactersLen, iso2ParameterType->stringValue.characters, iso2ParameterType_stringValue_CHARACTERS_SIZE);
								} else {
									/* string table hit */
									errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
								}
							}
							iso2ParameterType->stringValue_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}stringValue) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,SessionStopReqType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgBody":ChargingSession)',  derivedBy='EXTENSION'.  */
static int decode_iso2SessionStopReqType(bitstream_t* stream, struct iso2SessionStopReqType* iso2SessionStopReqType) {
	int grammarID = 946;
	int done = 0;
	
	init_iso2SessionStopReqType(iso2SessionStopReqType);
	
	while(!done) {
		switch(grammarID) {
		case 946:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ChargingSession)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 1, &uint32);
							iso2SessionStopReqType->ChargingSession = (iso2chargingSessionType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ChargingSession) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,SensorMeasurementsType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgDataTypes":SensorID,"urn:iso:15118:2:2016:MsgDataTypes":EffectiveRadiatedPower,"urn:iso:15118:2:2016:MsgDataTypes":MeasurementDataList)',  derivedBy='RESTRICTION'.  */
static int decode_iso2SensorMeasurementsType(bitstream_t* stream, struct iso2SensorMeasurementsType* iso2SensorMeasurementsType) {
	int grammarID = 947;
	int done = 0;
	
	init_iso2SensorMeasurementsType(iso2SensorMeasurementsType);
	
	while(!done) {
		switch(grammarID) {
		case 947:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorID)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
							iso2SensorMeasurementsType->SensorID = (uint8_t)(uint32 + 0);
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorID) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 948;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 948:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EffectiveRadiatedPower)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
							iso2SensorMeasurementsType->EffectiveRadiatedPower = (int8_t)(uint32 -128);
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EffectiveRadiatedPower) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 949;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 949:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementDataList)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2MeasurementDataListType(stream, &iso2SensorMeasurementsType->MeasurementDataList);
					grammarID = 3;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,DC_EVSEChargeParameterType',  base type name='EVSEEnergyTransferParameterType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgDataTypes":EVSEMaximumChargePower,"urn:iso:15118:2:2016:MsgDataTypes":EVSEMaximumChargeCurrent,"urn:iso:15118:2:2016:MsgDataTypes":EVSEMinimumChargeCurrent,"urn:iso:15118:2:2016:MsgDataTypes":EVSEMaximumVoltage,"urn:iso:15118:2:2016:MsgDataTypes":EVSEMinimumVoltage,"urn:iso:15118:2:2016:MsgDataTypes":EVSECurrentRegulationTolerance{0-1},"urn:iso:15118:2:2016:MsgDataTypes":EVSEPeakCurrentRipple,"urn:iso:15118:2:2016:MsgDataTypes":EVSEEnergyToBeDelivered{0-1})',  derivedBy='EXTENSION'.  */
static int decode_iso2DC_EVSEChargeParameterType(bitstream_t* stream, struct iso2DC_EVSEChargeParameterType* iso2DC_EVSEChargeParameterType) {
	int grammarID = 950;
	int done = 0;
	
	init_iso2DC_EVSEChargeParameterType(iso2DC_EVSEChargeParameterType);
	
	while(!done) {
		switch(grammarID) {
		case 950:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEMaximumChargePower)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVSEChargeParameterType->EVSEMaximumChargePower);
					grammarID = 951;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 951:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEMaximumChargeCurrent)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVSEChargeParameterType->EVSEMaximumChargeCurrent);
					grammarID = 952;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 952:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEMinimumChargeCurrent)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVSEChargeParameterType->EVSEMinimumChargeCurrent);
					grammarID = 953;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 953:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEMaximumVoltage)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVSEChargeParameterType->EVSEMaximumVoltage);
					grammarID = 954;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 954:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEMinimumVoltage)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVSEChargeParameterType->EVSEMinimumVoltage);
					grammarID = 955;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 955:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSECurrentRegulationTolerance), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEPeakCurrentRipple)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVSEChargeParameterType->EVSECurrentRegulationTolerance);
					iso2DC_EVSEChargeParameterType->EVSECurrentRegulationTolerance_isUsed = 1u;
					grammarID = 956;
					break;
				case 1:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVSEChargeParameterType->EVSEPeakCurrentRipple);
					grammarID = 957;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 956:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEPeakCurrentRipple)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVSEChargeParameterType->EVSEPeakCurrentRipple);
					grammarID = 957;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 957:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEEnergyToBeDelivered), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVSEChargeParameterType->EVSEEnergyToBeDelivered);
					iso2DC_EVSEChargeParameterType->EVSEEnergyToBeDelivered_isUsed = 1u;
					grammarID = 3;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,SensorPackageListType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgDataTypes":SensorPackage{1-255})',  derivedBy='RESTRICTION'.  */
static int decode_iso2SensorPackageListType(bitstream_t* stream, struct iso2SensorPackageListType* iso2SensorPackageListType) {
	int grammarID = 958;
	int done = 0;
	
	init_iso2SensorPackageListType(iso2SensorPackageListType);
	
	while(!done) {
		switch(grammarID) {
		case 958:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 959;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 959:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 960;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 960:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 961;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 961:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 962;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 962:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 963;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 963:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 964;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 964:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 965;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 965:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 966;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 966:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 967;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 967:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 968;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 968:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 969;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 969:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 970;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 970:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 971;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 971:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 972;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 972:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 973;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 973:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 974;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 974:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 975;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 975:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 976;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 976:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 977;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 977:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 978;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 978:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 979;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 979:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 980;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 980:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 981;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 981:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 982;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 982:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 983;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 983:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 984;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 984:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 985;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 985:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 986;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 986:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 987;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 987:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 988;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 988:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 989;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 989:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 990;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 990:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 991;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 991:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 992;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 992:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 993;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 993:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 994;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 994:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 995;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 995:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 996;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 996:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 997;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 997:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 998;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 998:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 999;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 999:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1000;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1000:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1001;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1001:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1002;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1002:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1003;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1003:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1004;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1004:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1005;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1005:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1006;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1006:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1007;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1007:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1008;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1008:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1009;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1009:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1010;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1010:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1011;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1011:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1012;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1012:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1013;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1013:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1014;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1014:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1015;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1015:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1016;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1016:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1017;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1017:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1018;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1018:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1019;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1019:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1020;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1020:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1021;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1021:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1022;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1022:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1023;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1023:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1024;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1024:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1025;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1025:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1026;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1026:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1027;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1027:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1028;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1028:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1029;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1029:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1030;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1030:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1031;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1031:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1032;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1032:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1033;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1033:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1034;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1034:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1035;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1035:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1036;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1036:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1037;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1037:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1038;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1038:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1039;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1039:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1040;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1040:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1041;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1041:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1042;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1042:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1043;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1043:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1044;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1044:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1045;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1045:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1046;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1046:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1047;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1047:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1048;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1048:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1049;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1049:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1050;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1050:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1051;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1051:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1052;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1052:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1053;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1053:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1054;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1054:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1055;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1055:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1056;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1056:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1057;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1057:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1058;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1058:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1059;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1059:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1060;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1060:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1061;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1061:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1062;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1062:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1063;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1063:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1064;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1064:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1065;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1065:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1066;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1066:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1067;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1067:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1068;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1068:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1069;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1069:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1070;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1070:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1071;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1071:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1072;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1072:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1073;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1073:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1074;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1074:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1075;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1075:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1076;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1076:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1077;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1077:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1078;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1078:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1079;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1079:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1080;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1080:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1081;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1081:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1082;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1082:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1083;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1083:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1084;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1084:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1085;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1085:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1086;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1086:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1087;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1087:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1088;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1088:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1089;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1089:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1090;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1090:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1091;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1091:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1092;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1092:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1093;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1093:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1094;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1094:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1095;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1095:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1096;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1096:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1097;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1097:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1098;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1098:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1099;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1099:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1100;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1100:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1101;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1101:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1102;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1102:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1103;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1103:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1104;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1104:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1105;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1105:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1106;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1106:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1107;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1107:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1108;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1108:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1109;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1109:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1110;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1110:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1111;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1111:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1112;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1112:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1113;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1113:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1114;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1114:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1115;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1115:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1116;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1116:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1117;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1117:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1118;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1118:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1119;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1119:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1120;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1120:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1121;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1121:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1122;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1122:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1123;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1123:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1124;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1124:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1125;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1125:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1126;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1126:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1127;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1127:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1128;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1128:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1129;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1129:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1130;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1130:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1131;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1131:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1132;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1132:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1133;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1133:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1134;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1134:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1135;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1135:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1136;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1136:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1137;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1137:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1138;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1138:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1139;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1139:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1140;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1140:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1141;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1141:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1142;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1142:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1143;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1143:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1144;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1144:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1145;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1145:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1146;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1146:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1147;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1147:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1148;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1148:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1149;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1149:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1150;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1150:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1151;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1151:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1152;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1152:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1153;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1153:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1154;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1154:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1155;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1155:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1156;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1156:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1157;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1157:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1158;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1158:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1159;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1159:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1160;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1160:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1161;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1161:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1162;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1162:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1163;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1163:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1164;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1164:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1165;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1165:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1166;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1166:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1167;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1167:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1168;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1168:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1169;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1169:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1170;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1170:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1171;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1171:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1172;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1172:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1173;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1173:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1174;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1174:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1175;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1175:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1176;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1176:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1177;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1177:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1178;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1178:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1179;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1179:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1180;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1180:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1181;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1181:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1182;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1182:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1183;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1183:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1184;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1184:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1185;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1185:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1186;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1186:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1187;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1187:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1188;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1188:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1189;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1189:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1190;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1190:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1191;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1191:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1192;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1192:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1193;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1193:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1194;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1194:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1195;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1195:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1196;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1196:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1197;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1197:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1198;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1198:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1199;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1199:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1200;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1200:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1201;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1201:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1202;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1202:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1203;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1203:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1204;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1204:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1205;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1205:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1206;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1206:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1207;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1207:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1208;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1208:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1209;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1209:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1210;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1210:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1211;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1211:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1212;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1212:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageListType->SensorPackage.arrayLen < iso2SensorPackageListType_SensorPackage_ARRAY_SIZE) {
						errn = decode_iso2SensorPackageType(stream, &iso2SensorPackageListType->SensorPackage.array[iso2SensorPackageListType->SensorPackage.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 3;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,MeasurementDataListType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgDataTypes":MeasurementData{1-255})',  derivedBy='RESTRICTION'.  */
static int decode_iso2MeasurementDataListType(bitstream_t* stream, struct iso2MeasurementDataListType* iso2MeasurementDataListType) {
	int grammarID = 1213;
	int done = 0;
	
	init_iso2MeasurementDataListType(iso2MeasurementDataListType);
	
	while(!done) {
		switch(grammarID) {
		case 1213:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1214;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1214:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1215;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1215:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1216;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1216:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1217;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1217:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1218;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1218:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1219;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1219:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1220;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1220:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1221;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1221:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1222;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1222:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1223;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1223:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1224;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1224:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1225;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1225:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1226;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1226:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1227;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1227:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1228;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1228:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1229;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1229:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1230;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1230:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1231;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1231:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1232;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1232:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1233;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1233:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1234;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1234:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1235;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1235:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1236;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1236:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1237;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1237:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1238;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1238:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1239;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1239:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1240;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1240:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1241;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1241:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1242;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1242:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1243;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1243:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1244;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1244:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1245;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1245:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1246;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1246:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1247;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1247:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1248;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1248:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1249;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1249:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1250;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1250:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1251;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1251:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1252;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1252:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1253;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1253:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1254;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1254:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1255;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1255:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1256;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1256:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1257;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1257:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1258;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1258:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1259;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1259:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1260;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1260:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1261;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1261:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1262;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1262:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1263;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1263:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1264;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1264:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1265;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1265:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1266;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1266:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1267;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1267:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1268;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1268:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1269;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1269:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1270;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1270:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1271;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1271:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1272;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1272:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1273;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1273:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1274;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1274:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1275;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1275:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1276;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1276:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1277;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1277:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1278;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1278:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1279;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1279:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1280;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1280:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1281;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1281:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1282;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1282:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1283;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1283:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1284;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1284:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1285;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1285:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1286;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1286:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1287;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1287:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1288;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1288:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1289;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1289:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1290;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1290:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1291;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1291:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1292;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1292:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1293;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1293:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1294;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1294:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1295;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1295:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1296;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1296:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1297;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1297:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1298;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1298:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1299;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1299:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1300;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1300:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1301;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1301:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1302;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1302:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1303;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1303:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1304;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1304:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1305;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1305:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1306;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1306:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1307;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1307:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1308;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1308:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1309;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1309:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1310;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1310:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1311;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1311:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1312;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1312:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1313;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1313:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1314;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1314:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1315;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1315:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1316;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1316:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1317;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1317:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1318;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1318:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1319;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1319:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1320;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1320:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1321;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1321:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1322;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1322:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1323;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1323:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1324;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1324:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1325;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1325:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1326;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1326:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1327;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1327:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1328;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1328:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1329;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1329:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1330;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1330:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1331;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1331:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1332;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1332:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1333;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1333:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1334;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1334:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1335;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1335:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1336;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1336:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1337;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1337:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1338;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1338:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1339;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1339:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1340;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1340:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1341;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1341:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1342;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1342:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1343;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1343:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1344;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1344:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1345;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1345:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1346;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1346:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1347;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1347:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1348;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1348:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1349;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1349:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1350;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1350:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1351;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1351:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1352;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1352:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1353;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1353:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1354;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1354:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1355;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1355:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1356;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1356:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1357;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1357:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1358;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1358:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1359;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1359:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1360;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1360:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1361;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1361:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1362;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1362:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1363;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1363:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1364;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1364:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1365;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1365:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1366;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1366:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1367;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1367:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1368;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1368:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1369;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1369:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1370;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1370:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1371;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1371:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1372;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1372:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1373;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1373:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1374;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1374:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1375;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1375:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1376;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1376:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1377;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1377:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1378;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1378:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1379;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1379:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1380;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1380:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1381;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1381:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1382;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1382:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1383;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1383:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1384;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1384:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1385;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1385:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1386;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1386:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1387;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1387:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1388;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1388:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1389;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1389:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1390;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1390:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1391;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1391:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1392;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1392:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1393;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1393:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1394;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1394:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1395;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1395:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1396;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1396:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1397;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1397:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1398;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1398:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1399;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1399:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1400;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1400:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1401;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1401:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1402;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1402:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1403;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1403:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1404;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1404:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1405;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1405:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1406;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1406:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1407;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1407:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1408;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1408:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1409;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1409:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1410;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1410:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1411;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1411:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1412;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1412:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1413;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1413:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1414;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1414:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1415;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1415:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1416;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1416:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1417;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1417:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1418;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1418:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1419;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1419:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1420;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1420:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1421;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1421:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1422;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1422:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1423;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1423:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1424;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1424:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1425;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1425:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1426;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1426:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1427;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1427:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1428;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1428:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1429;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1429:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1430;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1430:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1431;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1431:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1432;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1432:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1433;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1433:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1434;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1434:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1435;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1435:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1436;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1436:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1437;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1437:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1438;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1438:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1439;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1439:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1440;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1440:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1441;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1441:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1442;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1442:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1443;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1443:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1444;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1444:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1445;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1445:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1446;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1446:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1447;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1447:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1448;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1448:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1449;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1449:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1450;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1450:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1451;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1451:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1452;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1452:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1453;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1453:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1454;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1454:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1455;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1455:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1456;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1456:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1457;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1457:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1458;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1458:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1459;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1459:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1460;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1460:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1461;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1461:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1462;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1462:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1463;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1463:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1464;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1464:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1465;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1465:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1466;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1466:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1467;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1467:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MeasurementDataListType->MeasurementData.arrayLen < iso2MeasurementDataListType_MeasurementData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2MeasurementDataListType->MeasurementData.array[iso2MeasurementDataListType->MeasurementData.arrayLen]);
								iso2MeasurementDataListType->MeasurementData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,CertificateChainType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgDataTypes":Certificate,"urn:iso:15118:2:2016:MsgDataTypes":SubCertificates{0-1})',  derivedBy='RESTRICTION'.  */
static int decode_iso2CertificateChainType(bitstream_t* stream, struct iso2CertificateChainType* iso2CertificateChainType) {
	int grammarID = 1468;
	int done = 0;
	
	init_iso2CertificateChainType(iso2CertificateChainType);
	
	while(!done) {
		switch(grammarID) {
		case 1468:
			/* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2016:MsgDataTypes}Id), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Certificate)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decodeUnsignedInteger16(stream, &iso2CertificateChainType->Id.charactersLen);
					if (errn == 0) {
						if (iso2CertificateChainType->Id.charactersLen >= 2) {
							iso2CertificateChainType->Id.charactersLen = (uint16_t)(iso2CertificateChainType->Id.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2CertificateChainType->Id.charactersLen, iso2CertificateChainType->Id.characters, iso2CertificateChainType_Id_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					iso2CertificateChainType->Id_isUsed = 1u;
					grammarID = 1469;
					break;
				case 1:
					/* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2CertificateChainType->Certificate.bytesLen);
							if (errn == 0) {
								errn =  (iso2CertificateChainType->Certificate.bytesLen) <= iso2CertificateChainType_Certificate_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
							}
							if (errn == 0) {
								errn = decodeBytes(stream, iso2CertificateChainType->Certificate.bytesLen, iso2CertificateChainType->Certificate.bytes);
							}
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Certificate) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1470;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1469:
			/* StartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Certificate)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2CertificateChainType->Certificate.bytesLen);
							if (errn == 0) {
								errn =  (iso2CertificateChainType->Certificate.bytesLen) <= iso2CertificateChainType_Certificate_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
							}
							if (errn == 0) {
								errn = decodeBytes(stream, iso2CertificateChainType->Certificate.bytesLen, iso2CertificateChainType->Certificate.bytes);
							}
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Certificate) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1470;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1470:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SubCertificates), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2SubCertificatesType(stream, &iso2CertificateChainType->SubCertificates);
					iso2CertificateChainType->SubCertificates_isUsed = 1u;
					grammarID = 3;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='http://www.w3.org/2000/09/xmldsig#,SignaturePropertyType',  base type name='anyType',  content type='MIXED',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='((WC[##other:"http://www.w3.org/2000/09/xmldsig#"])){1-UNBOUNDED}',  derivedBy='RESTRICTION'.  */
static int decode_iso2SignaturePropertyType(bitstream_t* stream, struct iso2SignaturePropertyType* iso2SignaturePropertyType) {
	int grammarID = 1471;
	int done = 0;
	
	init_iso2SignaturePropertyType(iso2SignaturePropertyType);
	
	while(!done) {
		switch(grammarID) {
		case 1471:
			/* FirstStartTag[ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING](Target)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decodeUnsignedInteger16(stream, &iso2SignaturePropertyType->Id.charactersLen);
					if (errn == 0) {
						if (iso2SignaturePropertyType->Id.charactersLen >= 2) {
							iso2SignaturePropertyType->Id.charactersLen = (uint16_t)(iso2SignaturePropertyType->Id.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2SignaturePropertyType->Id.charactersLen, iso2SignaturePropertyType->Id.characters, iso2SignaturePropertyType_Id_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					iso2SignaturePropertyType->Id_isUsed = 1u;
					grammarID = 1472;
					break;
				case 1:
					errn = decodeUnsignedInteger16(stream, &iso2SignaturePropertyType->Target.charactersLen);
					if (errn == 0) {
						if (iso2SignaturePropertyType->Target.charactersLen >= 2) {
							iso2SignaturePropertyType->Target.charactersLen = (uint16_t)(iso2SignaturePropertyType->Target.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2SignaturePropertyType->Target.charactersLen, iso2SignaturePropertyType->Target.characters, iso2SignaturePropertyType_Target_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					grammarID = 1473;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1472:
			/* StartTag[ATTRIBUTE[STRING](Target)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decodeUnsignedInteger16(stream, &iso2SignaturePropertyType->Target.charactersLen);
					if (errn == 0) {
						if (iso2SignaturePropertyType->Target.charactersLen >= 2) {
							iso2SignaturePropertyType->Target.charactersLen = (uint16_t)(iso2SignaturePropertyType->Target.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2SignaturePropertyType->Target.charactersLen, iso2SignaturePropertyType->Target.characters, iso2SignaturePropertyType_Target_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					grammarID = 1473;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1473:
			/* StartTag[START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					/* TODO unsupported event : START_ELEMENT_GENERIC */
					grammarID = 685;
					break;
				case 1:
					errn = decodeUnsignedInteger16(stream, &iso2SignaturePropertyType->ANY.charactersLen);
					if (errn == 0) {
						if (iso2SignaturePropertyType->ANY.charactersLen >= 2) {
							iso2SignaturePropertyType->ANY.charactersLen = (uint16_t)(iso2SignaturePropertyType->ANY.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2SignaturePropertyType->ANY.charactersLen, iso2SignaturePropertyType->ANY.characters, iso2SignaturePropertyType_ANY_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					iso2SignaturePropertyType->ANY_isUsed = 1u;
					grammarID = 1474;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 685:
			/* Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					/* TODO unsupported event : START_ELEMENT_GENERIC */
					grammarID = 685;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				case 2:
					errn = decodeUnsignedInteger16(stream, &iso2SignaturePropertyType->ANY.charactersLen);
					if (errn == 0) {
						if (iso2SignaturePropertyType->ANY.charactersLen >= 2) {
							iso2SignaturePropertyType->ANY.charactersLen = (uint16_t)(iso2SignaturePropertyType->ANY.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2SignaturePropertyType->ANY.charactersLen, iso2SignaturePropertyType->ANY.characters, iso2SignaturePropertyType_ANY_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					iso2SignaturePropertyType->ANY_isUsed = 1u;
					grammarID = 685;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1474:
			/* Element[START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					/* TODO unsupported event : START_ELEMENT_GENERIC */
					grammarID = 685;
					break;
				case 1:
					errn = decodeUnsignedInteger16(stream, &iso2SignaturePropertyType->ANY.charactersLen);
					if (errn == 0) {
						if (iso2SignaturePropertyType->ANY.charactersLen >= 2) {
							iso2SignaturePropertyType->ANY.charactersLen = (uint16_t)(iso2SignaturePropertyType->ANY.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2SignaturePropertyType->ANY.charactersLen, iso2SignaturePropertyType->ANY.characters, iso2SignaturePropertyType_ANY_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					iso2SignaturePropertyType->ANY_isUsed = 1u;
					grammarID = 1474;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='http://www.w3.org/2000/09/xmldsig#,TransformType',  base type name='anyType',  content type='MIXED',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='((WC[##other:"http://www.w3.org/2000/09/xmldsig#"])|"http://www.w3.org/2000/09/xmldsig#":XPath){0-UNBOUNDED}',  derivedBy='RESTRICTION'.  */
static int decode_iso2TransformType(bitstream_t* stream, struct iso2TransformType* iso2TransformType) {
	int grammarID = 1475;
	int done = 0;
	
	init_iso2TransformType(iso2TransformType);
	
	while(!done) {
		switch(grammarID) {
		case 1475:
			/* FirstStartTag[ATTRIBUTE[STRING](Algorithm)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decodeUnsignedInteger16(stream, &iso2TransformType->Algorithm.charactersLen);
					if (errn == 0) {
						if (iso2TransformType->Algorithm.charactersLen >= 2) {
							iso2TransformType->Algorithm.charactersLen = (uint16_t)(iso2TransformType->Algorithm.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2TransformType->Algorithm.charactersLen, iso2TransformType->Algorithm.characters, iso2TransformType_Algorithm_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					grammarID = 1476;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1476:
			/* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2TransformType->XPath.arrayLen < iso2TransformType_XPath_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[STRING]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2TransformType->XPath.array[iso2TransformType->XPath.arrayLen].charactersLen);
								if (errn == 0) {
									if (iso2TransformType->XPath.array[iso2TransformType->XPath.arrayLen].charactersLen >= 2) {
										iso2TransformType->XPath.array[iso2TransformType->XPath.arrayLen].charactersLen = (uint16_t)(iso2TransformType->XPath.array[iso2TransformType->XPath.arrayLen].charactersLen - 2); /* string table miss */
										errn = decodeCharacters(stream, iso2TransformType->XPath.array[iso2TransformType->XPath.arrayLen].charactersLen, iso2TransformType->XPath.array[iso2TransformType->XPath.arrayLen].characters, iso2TransformType_XPath_CHARACTERS_SIZE);
									} else {
										/* string table hit */
										errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
									}
								}
								iso2TransformType->XPath.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1477;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					/* TODO unsupported event : START_ELEMENT_GENERIC */
					grammarID = 1477;
					break;
				case 2:
					done = 1;
					grammarID = 4;
					break;
				case 3:
					errn = decodeUnsignedInteger16(stream, &iso2TransformType->ANY.charactersLen);
					if (errn == 0) {
						if (iso2TransformType->ANY.charactersLen >= 2) {
							iso2TransformType->ANY.charactersLen = (uint16_t)(iso2TransformType->ANY.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2TransformType->ANY.charactersLen, iso2TransformType->ANY.characters, iso2TransformType_ANY_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					iso2TransformType->ANY_isUsed = 1u;
					grammarID = 1477;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1477:
			/* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2TransformType->XPath.arrayLen < iso2TransformType_XPath_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[STRING]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2TransformType->XPath.array[iso2TransformType->XPath.arrayLen].charactersLen);
								if (errn == 0) {
									if (iso2TransformType->XPath.array[iso2TransformType->XPath.arrayLen].charactersLen >= 2) {
										iso2TransformType->XPath.array[iso2TransformType->XPath.arrayLen].charactersLen = (uint16_t)(iso2TransformType->XPath.array[iso2TransformType->XPath.arrayLen].charactersLen - 2); /* string table miss */
										errn = decodeCharacters(stream, iso2TransformType->XPath.array[iso2TransformType->XPath.arrayLen].charactersLen, iso2TransformType->XPath.array[iso2TransformType->XPath.arrayLen].characters, iso2TransformType_XPath_CHARACTERS_SIZE);
									} else {
										/* string table hit */
										errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
									}
								}
								iso2TransformType->XPath.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1477;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					/* TODO unsupported event : START_ELEMENT_GENERIC */
					grammarID = 1477;
					break;
				case 2:
					done = 1;
					grammarID = 4;
					break;
				case 3:
					errn = decodeUnsignedInteger16(stream, &iso2TransformType->ANY.charactersLen);
					if (errn == 0) {
						if (iso2TransformType->ANY.charactersLen >= 2) {
							iso2TransformType->ANY.charactersLen = (uint16_t)(iso2TransformType->ANY.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2TransformType->ANY.charactersLen, iso2TransformType->ANY.characters, iso2TransformType_ANY_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					iso2TransformType->ANY_isUsed = 1u;
					grammarID = 1477;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,EMAIDType',  base type name='eMAIDType',  content type='SIMPLE',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  derivedBy='EXTENSION'.  */
static int decode_iso2EMAIDType(bitstream_t* stream, struct iso2EMAIDType* iso2EMAIDType) {
	int grammarID = 1478;
	int done = 0;
	
	init_iso2EMAIDType(iso2EMAIDType);
	
	while(!done) {
		switch(grammarID) {
		case 1478:
			/* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2016:MsgDataTypes}Id)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decodeUnsignedInteger16(stream, &iso2EMAIDType->Id.charactersLen);
					if (errn == 0) {
						if (iso2EMAIDType->Id.charactersLen >= 2) {
							iso2EMAIDType->Id.charactersLen = (uint16_t)(iso2EMAIDType->Id.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2EMAIDType->Id.charactersLen, iso2EMAIDType->Id.characters, iso2EMAIDType_Id_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					grammarID = 1479;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1479:
			/* StartTag[CHARACTERS[STRING]] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decodeUnsignedInteger16(stream, &iso2EMAIDType->CONTENT.charactersLen);
					if (errn == 0) {
						if (iso2EMAIDType->CONTENT.charactersLen >= 2) {
							iso2EMAIDType->CONTENT.charactersLen = (uint16_t)(iso2EMAIDType->CONTENT.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2EMAIDType->CONTENT.charactersLen, iso2EMAIDType->CONTENT.characters, iso2EMAIDType_CONTENT_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					grammarID = 3;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='http://www.w3.org/2000/09/xmldsig#,DSAKeyValueType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(("http://www.w3.org/2000/09/xmldsig#":P,"http://www.w3.org/2000/09/xmldsig#":Q){0-1},"http://www.w3.org/2000/09/xmldsig#":G{0-1},"http://www.w3.org/2000/09/xmldsig#":Y,"http://www.w3.org/2000/09/xmldsig#":J{0-1},("http://www.w3.org/2000/09/xmldsig#":Seed,"http://www.w3.org/2000/09/xmldsig#":PgenCounter){0-1})',  derivedBy='RESTRICTION'.  */
static int decode_iso2DSAKeyValueType(bitstream_t* stream, struct iso2DSAKeyValueType* iso2DSAKeyValueType) {
	int grammarID = 1480;
	int done = 0;
	
	init_iso2DSAKeyValueType(iso2DSAKeyValueType);
	
	while(!done) {
		switch(grammarID) {
		case 1480:
			/* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}P), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2DSAKeyValueType->P.bytesLen);
							if (errn == 0) {
								errn =  (iso2DSAKeyValueType->P.bytesLen) <= iso2DSAKeyValueType_P_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
							}
							if (errn == 0) {
								errn = decodeBytes(stream, iso2DSAKeyValueType->P.bytesLen, iso2DSAKeyValueType->P.bytes);
							}
							iso2DSAKeyValueType->P_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}P) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1481;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					/* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2DSAKeyValueType->G.bytesLen);
							if (errn == 0) {
								errn =  (iso2DSAKeyValueType->G.bytesLen) <= iso2DSAKeyValueType_G_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
							}
							if (errn == 0) {
								errn = decodeBytes(stream, iso2DSAKeyValueType->G.bytesLen, iso2DSAKeyValueType->G.bytes);
							}
							iso2DSAKeyValueType->G_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1482;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 2:
					/* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2DSAKeyValueType->Y.bytesLen);
							if (errn == 0) {
								errn =  (iso2DSAKeyValueType->Y.bytesLen) <= iso2DSAKeyValueType_Y_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
							}
							if (errn == 0) {
								errn = decodeBytes(stream, iso2DSAKeyValueType->Y.bytesLen, iso2DSAKeyValueType->Y.bytes);
							}
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1483;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1481:
			/* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Q)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2DSAKeyValueType->Q.bytesLen);
							if (errn == 0) {
								errn =  (iso2DSAKeyValueType->Q.bytesLen) <= iso2DSAKeyValueType_Q_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
							}
							if (errn == 0) {
								errn = decodeBytes(stream, iso2DSAKeyValueType->Q.bytesLen, iso2DSAKeyValueType->Q.bytes);
							}
							iso2DSAKeyValueType->Q_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Q) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1484;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1484:
			/* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2DSAKeyValueType->G.bytesLen);
							if (errn == 0) {
								errn =  (iso2DSAKeyValueType->G.bytesLen) <= iso2DSAKeyValueType_G_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
							}
							if (errn == 0) {
								errn = decodeBytes(stream, iso2DSAKeyValueType->G.bytesLen, iso2DSAKeyValueType->G.bytes);
							}
							iso2DSAKeyValueType->G_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1482;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					/* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2DSAKeyValueType->Y.bytesLen);
							if (errn == 0) {
								errn =  (iso2DSAKeyValueType->Y.bytesLen) <= iso2DSAKeyValueType_Y_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
							}
							if (errn == 0) {
								errn = decodeBytes(stream, iso2DSAKeyValueType->Y.bytesLen, iso2DSAKeyValueType->Y.bytes);
							}
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1483;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1482:
			/* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2DSAKeyValueType->Y.bytesLen);
							if (errn == 0) {
								errn =  (iso2DSAKeyValueType->Y.bytesLen) <= iso2DSAKeyValueType_Y_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
							}
							if (errn == 0) {
								errn = decodeBytes(stream, iso2DSAKeyValueType->Y.bytesLen, iso2DSAKeyValueType->Y.bytes);
							}
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1483;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1483:
			/* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}J), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2DSAKeyValueType->J.bytesLen);
							if (errn == 0) {
								errn =  (iso2DSAKeyValueType->J.bytesLen) <= iso2DSAKeyValueType_J_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
							}
							if (errn == 0) {
								errn = decodeBytes(stream, iso2DSAKeyValueType->J.bytesLen, iso2DSAKeyValueType->J.bytes);
							}
							iso2DSAKeyValueType->J_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}J) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1485;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					/* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2DSAKeyValueType->Seed.bytesLen);
							if (errn == 0) {
								errn =  (iso2DSAKeyValueType->Seed.bytesLen) <= iso2DSAKeyValueType_Seed_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
							}
							if (errn == 0) {
								errn = decodeBytes(stream, iso2DSAKeyValueType->Seed.bytesLen, iso2DSAKeyValueType->Seed.bytes);
							}
							iso2DSAKeyValueType->Seed_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1486;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 2:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1485:
			/* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2DSAKeyValueType->Seed.bytesLen);
							if (errn == 0) {
								errn =  (iso2DSAKeyValueType->Seed.bytesLen) <= iso2DSAKeyValueType_Seed_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
							}
							if (errn == 0) {
								errn = decodeBytes(stream, iso2DSAKeyValueType->Seed.bytesLen, iso2DSAKeyValueType->Seed.bytes);
							}
							iso2DSAKeyValueType->Seed_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1486;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1486:
			/* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PgenCounter)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2DSAKeyValueType->PgenCounter.bytesLen);
							if (errn == 0) {
								errn =  (iso2DSAKeyValueType->PgenCounter.bytesLen) <= iso2DSAKeyValueType_PgenCounter_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
							}
							if (errn == 0) {
								errn = decodeBytes(stream, iso2DSAKeyValueType->PgenCounter.bytesLen, iso2DSAKeyValueType->PgenCounter.bytes);
							}
							iso2DSAKeyValueType->PgenCounter_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PgenCounter) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,EntryType',  base type name='anyType',  content type='ELEMENT',  isAbstract='true',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgDataTypes":RelativeTimeInterval)',  derivedBy='RESTRICTION'.  */
static int decode_iso2EntryType(bitstream_t* stream, struct iso2EntryType* iso2EntryType) {
	int grammarID = 1487;
	int done = 0;
	
	init_iso2EntryType(iso2EntryType);
	
	while(!done) {
		switch(grammarID) {
		case 1487:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RelativeTimeInterval)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2RelativeTimeIntervalType(stream, &iso2EntryType->RelativeTimeInterval);
					grammarID = 3;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgHeader,MessageHeaderType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgHeader":SessionID,"http://www.w3.org/2000/09/xmldsig#":Signature{0-1})',  derivedBy='RESTRICTION'.  */
static int decode_iso2MessageHeaderType(bitstream_t* stream, struct iso2MessageHeaderType* iso2MessageHeaderType) {
	int grammarID = 1488;
	int done = 0;
	
	init_iso2MessageHeaderType(iso2MessageHeaderType);
	
	while(!done) {
		switch(grammarID) {
		case 1488:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgHeader}SessionID)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[BINARY_HEX]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2MessageHeaderType->SessionID.bytesLen);
							if (errn == 0) {
								errn =  (iso2MessageHeaderType->SessionID.bytesLen) <= iso2MessageHeaderType_SessionID_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
							}
							if (errn == 0) {
								errn = decodeBytes(stream, iso2MessageHeaderType->SessionID.bytesLen, iso2MessageHeaderType->SessionID.bytes);
							}
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgHeader}SessionID) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1489;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1489:
			/* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2SignatureType(stream, &iso2MessageHeaderType->Signature);
					iso2MessageHeaderType->Signature_isUsed = 1u;
					grammarID = 3;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,WPT_EVChargeParameterType',  base type name='EVEnergyTransferParameterType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(("urn:iso:15118:2:2016:MsgDataTypes":DepartureTime),("urn:iso:15118:2:2016:MsgDataTypes":EVMaximumPower,"urn:iso:15118:2:2016:MsgDataTypes":EVMinimumPower,"urn:iso:15118:2:2016:MsgDataTypes":EVTargetEnergyRequest{0-1},"urn:iso:15118:2:2016:MsgDataTypes":EVMaximumEnergyRequest{0-1},"urn:iso:15118:2:2016:MsgDataTypes":EVMinimumEnergyRequest{0-1}))',  derivedBy='EXTENSION'.  */
static int decode_iso2WPT_EVChargeParameterType(bitstream_t* stream, struct iso2WPT_EVChargeParameterType* iso2WPT_EVChargeParameterType) {
	int grammarID = 1490;
	int done = 0;
	
	init_iso2WPT_EVChargeParameterType(iso2WPT_EVChargeParameterType);
	
	while(!done) {
		switch(grammarID) {
		case 1490:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}DepartureTime)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger32(stream, &iso2WPT_EVChargeParameterType->DepartureTime);
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}DepartureTime) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1491;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1491:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumPower)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2WPT_EVChargeParameterType->EVMaximumPower);
					grammarID = 1492;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1492:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMinimumPower)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2WPT_EVChargeParameterType->EVMinimumPower);
					grammarID = 1493;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1493:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVTargetEnergyRequest), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumEnergyRequest), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMinimumEnergyRequest), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2WPT_EVChargeParameterType->EVTargetEnergyRequest);
					iso2WPT_EVChargeParameterType->EVTargetEnergyRequest_isUsed = 1u;
					grammarID = 1494;
					break;
				case 1:
					errn = decode_iso2PhysicalValueType(stream, &iso2WPT_EVChargeParameterType->EVMaximumEnergyRequest);
					iso2WPT_EVChargeParameterType->EVMaximumEnergyRequest_isUsed = 1u;
					grammarID = 1495;
					break;
				case 2:
					errn = decode_iso2PhysicalValueType(stream, &iso2WPT_EVChargeParameterType->EVMinimumEnergyRequest);
					iso2WPT_EVChargeParameterType->EVMinimumEnergyRequest_isUsed = 1u;
					grammarID = 3;
					break;
				case 3:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1494:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumEnergyRequest), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMinimumEnergyRequest), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2WPT_EVChargeParameterType->EVMaximumEnergyRequest);
					iso2WPT_EVChargeParameterType->EVMaximumEnergyRequest_isUsed = 1u;
					grammarID = 1495;
					break;
				case 1:
					errn = decode_iso2PhysicalValueType(stream, &iso2WPT_EVChargeParameterType->EVMinimumEnergyRequest);
					iso2WPT_EVChargeParameterType->EVMinimumEnergyRequest_isUsed = 1u;
					grammarID = 3;
					break;
				case 2:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1495:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMinimumEnergyRequest), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2WPT_EVChargeParameterType->EVMinimumEnergyRequest);
					iso2WPT_EVChargeParameterType->EVMinimumEnergyRequest_isUsed = 1u;
					grammarID = 3;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,DisconnectChargingDeviceReqType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgBody":EVElectricalChargingDeviceStatus,"urn:iso:15118:2:2016:MsgBody":EVMechanicalChargingDeviceStatus)',  derivedBy='EXTENSION'.  */
static int decode_iso2DisconnectChargingDeviceReqType(bitstream_t* stream, struct iso2DisconnectChargingDeviceReqType* iso2DisconnectChargingDeviceReqType) {
	int grammarID = 1496;
	int done = 0;
	
	init_iso2DisconnectChargingDeviceReqType(iso2DisconnectChargingDeviceReqType);
	
	while(!done) {
		switch(grammarID) {
		case 1496:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVElectricalChargingDeviceStatus)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 1, &uint32);
							iso2DisconnectChargingDeviceReqType->EVElectricalChargingDeviceStatus = (iso2electricalChargingDeviceStatusType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVElectricalChargingDeviceStatus) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1497;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1497:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMechanicalChargingDeviceStatus)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
							iso2DisconnectChargingDeviceReqType->EVMechanicalChargingDeviceStatus = (iso2mechanicalChargingDeviceStatusType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMechanicalChargingDeviceStatus) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,ChargeLoopReqType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='true',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgBody":EVTargetEnergyRequest,"urn:iso:15118:2:2016:MsgBody":EVMaximumEnergyRequest{0-1},"urn:iso:15118:2:2016:MsgBody":EVMinimumEnergyRequest{0-1},"urn:iso:15118:2:2016:MsgBody":DisplayParameters{0-1})',  derivedBy='EXTENSION'.  */
static int decode_iso2ChargeLoopReqType(bitstream_t* stream, struct iso2ChargeLoopReqType* iso2ChargeLoopReqType) {
	int grammarID = 1498;
	int done = 0;
	
	init_iso2ChargeLoopReqType(iso2ChargeLoopReqType);
	
	while(!done) {
		switch(grammarID) {
		case 1498:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVTargetEnergyRequest)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2ChargeLoopReqType->EVTargetEnergyRequest);
					grammarID = 1499;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1499:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMaximumEnergyRequest), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMinimumEnergyRequest), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}DisplayParameters), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2ChargeLoopReqType->EVMaximumEnergyRequest);
					iso2ChargeLoopReqType->EVMaximumEnergyRequest_isUsed = 1u;
					grammarID = 1500;
					break;
				case 1:
					errn = decode_iso2PhysicalValueType(stream, &iso2ChargeLoopReqType->EVMinimumEnergyRequest);
					iso2ChargeLoopReqType->EVMinimumEnergyRequest_isUsed = 1u;
					grammarID = 1501;
					break;
				case 2:
					errn = decode_iso2DisplayParametersType(stream, &iso2ChargeLoopReqType->DisplayParameters);
					iso2ChargeLoopReqType->DisplayParameters_isUsed = 1u;
					grammarID = 3;
					break;
				case 3:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1500:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMinimumEnergyRequest), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}DisplayParameters), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2ChargeLoopReqType->EVMinimumEnergyRequest);
					iso2ChargeLoopReqType->EVMinimumEnergyRequest_isUsed = 1u;
					grammarID = 1501;
					break;
				case 1:
					errn = decode_iso2DisplayParametersType(stream, &iso2ChargeLoopReqType->DisplayParameters);
					iso2ChargeLoopReqType->DisplayParameters_isUsed = 1u;
					grammarID = 3;
					break;
				case 2:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1501:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}DisplayParameters), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2DisplayParametersType(stream, &iso2ChargeLoopReqType->DisplayParameters);
					iso2ChargeLoopReqType->DisplayParameters_isUsed = 1u;
					grammarID = 3;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,V2GRequestType',  base type name='anyType',  content type='EMPTY',  isAbstract='true',  hasTypeId='false',  final='0',  block='0',  derivedBy='RESTRICTION'.  */
static int decode_iso2V2GRequestType(bitstream_t* stream, struct iso2V2GRequestType* iso2V2GRequestType) {
	int grammarID = 674;
	int done = 0;
	
	init_iso2V2GRequestType(iso2V2GRequestType);
	
	while(!done) {
		switch(grammarID) {
		case 674:
			/* FirstStartTag[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,MeteringReceiptResType',  base type name='V2GResponseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgBody":ResponseCode,"urn:iso:15118:2:2016:MsgBody":EVSEStatus{0-1})',  derivedBy='EXTENSION'.  */
static int decode_iso2MeteringReceiptResType(bitstream_t* stream, struct iso2MeteringReceiptResType* iso2MeteringReceiptResType) {
	int grammarID = 599;
	int done = 0;
	
	init_iso2MeteringReceiptResType(iso2MeteringReceiptResType);
	
	while(!done) {
		switch(grammarID) {
		case 599:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 5, &uint32);
							iso2MeteringReceiptResType->ResponseCode = (iso2responseCodeType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 600;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 600:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEStatus), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2EVSEStatusType(stream, &iso2MeteringReceiptResType->EVSEStatus);
					iso2MeteringReceiptResType->EVSEStatus_isUsed = 1u;
					grammarID = 3;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,SessionSetupResType',  base type name='V2GResponseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(("urn:iso:15118:2:2016:MsgBody":ResponseCode,"urn:iso:15118:2:2016:MsgBody":EVSEStatus{0-1}),("urn:iso:15118:2:2016:MsgBody":EVSEID,"urn:iso:15118:2:2016:MsgBody":EVSETimeStamp{0-1}))',  derivedBy='EXTENSION'.  */
static int decode_iso2SessionSetupResType(bitstream_t* stream, struct iso2SessionSetupResType* iso2SessionSetupResType) {
	int grammarID = 1502;
	int done = 0;
	
	init_iso2SessionSetupResType(iso2SessionSetupResType);
	
	while(!done) {
		switch(grammarID) {
		case 1502:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 5, &uint32);
							iso2SessionSetupResType->ResponseCode = (iso2responseCodeType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1503;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1503:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEID)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2EVSEStatusType(stream, &iso2SessionSetupResType->EVSEStatus);
					iso2SessionSetupResType->EVSEStatus_isUsed = 1u;
					grammarID = 1504;
					break;
				case 1:
					/* FirstStartTag[CHARACTERS[STRING]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2SessionSetupResType->EVSEID.charactersLen);
							if (errn == 0) {
								if (iso2SessionSetupResType->EVSEID.charactersLen >= 2) {
									iso2SessionSetupResType->EVSEID.charactersLen = (uint16_t)(iso2SessionSetupResType->EVSEID.charactersLen - 2); /* string table miss */
									errn = decodeCharacters(stream, iso2SessionSetupResType->EVSEID.charactersLen, iso2SessionSetupResType->EVSEID.characters, iso2SessionSetupResType_EVSEID_CHARACTERS_SIZE);
								} else {
									/* string table hit */
									errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
								}
							}
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEID) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1505;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1504:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEID)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[STRING]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2SessionSetupResType->EVSEID.charactersLen);
							if (errn == 0) {
								if (iso2SessionSetupResType->EVSEID.charactersLen >= 2) {
									iso2SessionSetupResType->EVSEID.charactersLen = (uint16_t)(iso2SessionSetupResType->EVSEID.charactersLen - 2); /* string table miss */
									errn = decodeCharacters(stream, iso2SessionSetupResType->EVSEID.charactersLen, iso2SessionSetupResType->EVSEID.characters, iso2SessionSetupResType_EVSEID_CHARACTERS_SIZE);
								} else {
									/* string table hit */
									errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
								}
							}
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEID) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1505;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1505:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSETimeStamp), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeInteger64(stream, &iso2SessionSetupResType->EVSETimeStamp);
							iso2SessionSetupResType->EVSETimeStamp_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSETimeStamp) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,AC_BidirectionalControlReqType',  base type name='ChargeLoopReqType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(("urn:iso:15118:2:2016:MsgBody":EVTargetEnergyRequest,"urn:iso:15118:2:2016:MsgBody":EVMaximumEnergyRequest{0-1},"urn:iso:15118:2:2016:MsgBody":EVMinimumEnergyRequest{0-1},"urn:iso:15118:2:2016:MsgBody":DisplayParameters{0-1}),("urn:iso:15118:2:2016:MsgBody":EVOperation{0-1},"urn:iso:15118:2:2016:MsgBody":EVMaximumChargePower,"urn:iso:15118:2:2016:MsgBody":EVMaximumDischargePower{0-1},"urn:iso:15118:2:2016:MsgBody":EVMaximumChargeCurrent,"urn:iso:15118:2:2016:MsgBody":EVMaximumDischargeCurrent{0-1},"urn:iso:15118:2:2016:MsgBody":EVMinimumChargeCurrent,"urn:iso:15118:2:2016:MsgBody":EVMinimumDischargeCurrent{0-1},"urn:iso:15118:2:2016:MsgBody":EVPresentActivePower,"urn:iso:15118:2:2016:MsgBody":EVPresentReactivePower))',  derivedBy='EXTENSION'.  */
static int decode_iso2AC_BidirectionalControlReqType(bitstream_t* stream, struct iso2AC_BidirectionalControlReqType* iso2AC_BidirectionalControlReqType) {
	int grammarID = 1506;
	int done = 0;
	
	init_iso2AC_BidirectionalControlReqType(iso2AC_BidirectionalControlReqType);
	
	while(!done) {
		switch(grammarID) {
		case 1506:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVTargetEnergyRequest)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2AC_BidirectionalControlReqType->EVTargetEnergyRequest);
					grammarID = 1507;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1507:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMaximumEnergyRequest), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMinimumEnergyRequest), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}DisplayParameters), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVOperation), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMaximumChargePower)] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2AC_BidirectionalControlReqType->EVMaximumEnergyRequest);
					iso2AC_BidirectionalControlReqType->EVMaximumEnergyRequest_isUsed = 1u;
					grammarID = 1508;
					break;
				case 1:
					errn = decode_iso2PhysicalValueType(stream, &iso2AC_BidirectionalControlReqType->EVMinimumEnergyRequest);
					iso2AC_BidirectionalControlReqType->EVMinimumEnergyRequest_isUsed = 1u;
					grammarID = 1509;
					break;
				case 2:
					errn = decode_iso2DisplayParametersType(stream, &iso2AC_BidirectionalControlReqType->DisplayParameters);
					iso2AC_BidirectionalControlReqType->DisplayParameters_isUsed = 1u;
					grammarID = 1510;
					break;
				case 3:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 1, &uint32);
							iso2AC_BidirectionalControlReqType->EVOperation = (iso2EVOperationType) uint32;
							iso2AC_BidirectionalControlReqType->EVOperation_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVOperation) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1511;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 4:
					errn = decode_iso2PhysicalValueType(stream, &iso2AC_BidirectionalControlReqType->EVMaximumChargePower);
					grammarID = 1512;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1508:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMinimumEnergyRequest), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}DisplayParameters), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVOperation), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMaximumChargePower)] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2AC_BidirectionalControlReqType->EVMinimumEnergyRequest);
					iso2AC_BidirectionalControlReqType->EVMinimumEnergyRequest_isUsed = 1u;
					grammarID = 1509;
					break;
				case 1:
					errn = decode_iso2DisplayParametersType(stream, &iso2AC_BidirectionalControlReqType->DisplayParameters);
					iso2AC_BidirectionalControlReqType->DisplayParameters_isUsed = 1u;
					grammarID = 1510;
					break;
				case 2:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 1, &uint32);
							iso2AC_BidirectionalControlReqType->EVOperation = (iso2EVOperationType) uint32;
							iso2AC_BidirectionalControlReqType->EVOperation_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVOperation) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1511;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 3:
					errn = decode_iso2PhysicalValueType(stream, &iso2AC_BidirectionalControlReqType->EVMaximumChargePower);
					grammarID = 1512;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1509:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}DisplayParameters), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVOperation), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMaximumChargePower)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2DisplayParametersType(stream, &iso2AC_BidirectionalControlReqType->DisplayParameters);
					iso2AC_BidirectionalControlReqType->DisplayParameters_isUsed = 1u;
					grammarID = 1510;
					break;
				case 1:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 1, &uint32);
							iso2AC_BidirectionalControlReqType->EVOperation = (iso2EVOperationType) uint32;
							iso2AC_BidirectionalControlReqType->EVOperation_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVOperation) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1511;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 2:
					errn = decode_iso2PhysicalValueType(stream, &iso2AC_BidirectionalControlReqType->EVMaximumChargePower);
					grammarID = 1512;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1510:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVOperation), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMaximumChargePower)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 1, &uint32);
							iso2AC_BidirectionalControlReqType->EVOperation = (iso2EVOperationType) uint32;
							iso2AC_BidirectionalControlReqType->EVOperation_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVOperation) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1511;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					errn = decode_iso2PhysicalValueType(stream, &iso2AC_BidirectionalControlReqType->EVMaximumChargePower);
					grammarID = 1512;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1511:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMaximumChargePower)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2AC_BidirectionalControlReqType->EVMaximumChargePower);
					grammarID = 1512;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1512:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMaximumDischargePower), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMaximumChargeCurrent)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2AC_BidirectionalControlReqType->EVMaximumDischargePower);
					iso2AC_BidirectionalControlReqType->EVMaximumDischargePower_isUsed = 1u;
					grammarID = 1513;
					break;
				case 1:
					errn = decode_iso2PhysicalValueType(stream, &iso2AC_BidirectionalControlReqType->EVMaximumChargeCurrent);
					grammarID = 1514;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1513:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMaximumChargeCurrent)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2AC_BidirectionalControlReqType->EVMaximumChargeCurrent);
					grammarID = 1514;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1514:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMaximumDischargeCurrent), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMinimumChargeCurrent)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2AC_BidirectionalControlReqType->EVMaximumDischargeCurrent);
					iso2AC_BidirectionalControlReqType->EVMaximumDischargeCurrent_isUsed = 1u;
					grammarID = 1515;
					break;
				case 1:
					errn = decode_iso2PhysicalValueType(stream, &iso2AC_BidirectionalControlReqType->EVMinimumChargeCurrent);
					grammarID = 1516;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1515:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMinimumChargeCurrent)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2AC_BidirectionalControlReqType->EVMinimumChargeCurrent);
					grammarID = 1516;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1516:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMinimumDischargeCurrent), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVPresentActivePower)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2AC_BidirectionalControlReqType->EVMinimumDischargeCurrent);
					iso2AC_BidirectionalControlReqType->EVMinimumDischargeCurrent_isUsed = 1u;
					grammarID = 1517;
					break;
				case 1:
					errn = decode_iso2PhysicalValueType(stream, &iso2AC_BidirectionalControlReqType->EVPresentActivePower);
					grammarID = 1518;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1517:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVPresentActivePower)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2AC_BidirectionalControlReqType->EVPresentActivePower);
					grammarID = 1518;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1518:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVPresentReactivePower)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2AC_BidirectionalControlReqType->EVPresentReactivePower);
					grammarID = 3;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,MV_EVSEFinePositioningParametersType',  base type name='EVSEFinePositioningParametersType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgDataTypes":MagneticVectorList)',  derivedBy='EXTENSION'.  */
static int decode_iso2MV_EVSEFinePositioningParametersType(bitstream_t* stream, struct iso2MV_EVSEFinePositioningParametersType* iso2MV_EVSEFinePositioningParametersType) {
	int grammarID = 1519;
	int done = 0;
	
	init_iso2MV_EVSEFinePositioningParametersType(iso2MV_EVSEFinePositioningParametersType);
	
	while(!done) {
		switch(grammarID) {
		case 1519:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorList)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2MagneticVectorListType(stream, &iso2MV_EVSEFinePositioningParametersType->MagneticVectorList);
					grammarID = 3;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='http://www.w3.org/2000/09/xmldsig#,ReferenceType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("http://www.w3.org/2000/09/xmldsig#":Transforms{0-1},"http://www.w3.org/2000/09/xmldsig#":DigestMethod,"http://www.w3.org/2000/09/xmldsig#":DigestValue)',  derivedBy='RESTRICTION'.  */
static int decode_iso2ReferenceType(bitstream_t* stream, struct iso2ReferenceType* iso2ReferenceType) {
	int grammarID = 1520;
	int done = 0;
	
	init_iso2ReferenceType(iso2ReferenceType);
	
	while(!done) {
		switch(grammarID) {
		case 1520:
			/* FirstStartTag[ATTRIBUTE[STRING](Id), ATTRIBUTE[STRING](Type), ATTRIBUTE[STRING](URI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod)] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decodeUnsignedInteger16(stream, &iso2ReferenceType->Id.charactersLen);
					if (errn == 0) {
						if (iso2ReferenceType->Id.charactersLen >= 2) {
							iso2ReferenceType->Id.charactersLen = (uint16_t)(iso2ReferenceType->Id.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2ReferenceType->Id.charactersLen, iso2ReferenceType->Id.characters, iso2ReferenceType_Id_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					iso2ReferenceType->Id_isUsed = 1u;
					grammarID = 1521;
					break;
				case 1:
					errn = decodeUnsignedInteger16(stream, &iso2ReferenceType->Type.charactersLen);
					if (errn == 0) {
						if (iso2ReferenceType->Type.charactersLen >= 2) {
							iso2ReferenceType->Type.charactersLen = (uint16_t)(iso2ReferenceType->Type.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2ReferenceType->Type.charactersLen, iso2ReferenceType->Type.characters, iso2ReferenceType_Type_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					iso2ReferenceType->Type_isUsed = 1u;
					grammarID = 1522;
					break;
				case 2:
					errn = decodeUnsignedInteger16(stream, &iso2ReferenceType->URI.charactersLen);
					if (errn == 0) {
						if (iso2ReferenceType->URI.charactersLen >= 2) {
							iso2ReferenceType->URI.charactersLen = (uint16_t)(iso2ReferenceType->URI.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2ReferenceType->URI.charactersLen, iso2ReferenceType->URI.characters, iso2ReferenceType_URI_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					iso2ReferenceType->URI_isUsed = 1u;
					grammarID = 1523;
					break;
				case 3:
					errn = decode_iso2TransformsType(stream, &iso2ReferenceType->Transforms);
					iso2ReferenceType->Transforms_isUsed = 1u;
					grammarID = 1524;
					break;
				case 4:
					errn = decode_iso2DigestMethodType(stream, &iso2ReferenceType->DigestMethod);
					grammarID = 1525;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1521:
			/* StartTag[ATTRIBUTE[STRING](Type), ATTRIBUTE[STRING](URI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod)] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decodeUnsignedInteger16(stream, &iso2ReferenceType->Type.charactersLen);
					if (errn == 0) {
						if (iso2ReferenceType->Type.charactersLen >= 2) {
							iso2ReferenceType->Type.charactersLen = (uint16_t)(iso2ReferenceType->Type.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2ReferenceType->Type.charactersLen, iso2ReferenceType->Type.characters, iso2ReferenceType_Type_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					iso2ReferenceType->Type_isUsed = 1u;
					grammarID = 1522;
					break;
				case 1:
					errn = decodeUnsignedInteger16(stream, &iso2ReferenceType->URI.charactersLen);
					if (errn == 0) {
						if (iso2ReferenceType->URI.charactersLen >= 2) {
							iso2ReferenceType->URI.charactersLen = (uint16_t)(iso2ReferenceType->URI.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2ReferenceType->URI.charactersLen, iso2ReferenceType->URI.characters, iso2ReferenceType_URI_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					iso2ReferenceType->URI_isUsed = 1u;
					grammarID = 1523;
					break;
				case 2:
					errn = decode_iso2TransformsType(stream, &iso2ReferenceType->Transforms);
					iso2ReferenceType->Transforms_isUsed = 1u;
					grammarID = 1524;
					break;
				case 3:
					errn = decode_iso2DigestMethodType(stream, &iso2ReferenceType->DigestMethod);
					grammarID = 1525;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1522:
			/* StartTag[ATTRIBUTE[STRING](URI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decodeUnsignedInteger16(stream, &iso2ReferenceType->URI.charactersLen);
					if (errn == 0) {
						if (iso2ReferenceType->URI.charactersLen >= 2) {
							iso2ReferenceType->URI.charactersLen = (uint16_t)(iso2ReferenceType->URI.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2ReferenceType->URI.charactersLen, iso2ReferenceType->URI.characters, iso2ReferenceType_URI_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					iso2ReferenceType->URI_isUsed = 1u;
					grammarID = 1523;
					break;
				case 1:
					errn = decode_iso2TransformsType(stream, &iso2ReferenceType->Transforms);
					iso2ReferenceType->Transforms_isUsed = 1u;
					grammarID = 1524;
					break;
				case 2:
					errn = decode_iso2DigestMethodType(stream, &iso2ReferenceType->DigestMethod);
					grammarID = 1525;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1523:
			/* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2TransformsType(stream, &iso2ReferenceType->Transforms);
					iso2ReferenceType->Transforms_isUsed = 1u;
					grammarID = 1524;
					break;
				case 1:
					errn = decode_iso2DigestMethodType(stream, &iso2ReferenceType->DigestMethod);
					grammarID = 1525;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1524:
			/* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2DigestMethodType(stream, &iso2ReferenceType->DigestMethod);
					grammarID = 1525;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1525:
			/* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2ReferenceType->DigestValue.bytesLen);
							if (errn == 0) {
								errn =  (iso2ReferenceType->DigestValue.bytesLen) <= iso2ReferenceType_DigestValue_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
							}
							if (errn == 0) {
								errn = decodeBytes(stream, iso2ReferenceType->DigestValue.bytesLen, iso2ReferenceType->DigestValue.bytes);
							}
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,EVSEEnergyTransferParameterType',  base type name='anyType',  content type='EMPTY',  isAbstract='true',  hasTypeId='false',  final='0',  block='0',  derivedBy='RESTRICTION'.  */
static int decode_iso2EVSEEnergyTransferParameterType(bitstream_t* stream, struct iso2EVSEEnergyTransferParameterType* iso2EVSEEnergyTransferParameterType) {
	int grammarID = 674;
	int done = 0;
	
	init_iso2EVSEEnergyTransferParameterType(iso2EVSEEnergyTransferParameterType);
	
	while(!done) {
		switch(grammarID) {
		case 674:
			/* FirstStartTag[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,MeteringReceiptReqType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgBody":SessionID,"urn:iso:15118:2:2016:MsgBody":SAScheduleTupleID{0-1},"urn:iso:15118:2:2016:MsgBody":MeterInfo)',  derivedBy='EXTENSION'.  */
static int decode_iso2MeteringReceiptReqType(bitstream_t* stream, struct iso2MeteringReceiptReqType* iso2MeteringReceiptReqType) {
	int grammarID = 1526;
	int done = 0;
	
	init_iso2MeteringReceiptReqType(iso2MeteringReceiptReqType);
	
	while(!done) {
		switch(grammarID) {
		case 1526:
			/* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2016:MsgBody}Id)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decodeUnsignedInteger16(stream, &iso2MeteringReceiptReqType->Id.charactersLen);
					if (errn == 0) {
						if (iso2MeteringReceiptReqType->Id.charactersLen >= 2) {
							iso2MeteringReceiptReqType->Id.charactersLen = (uint16_t)(iso2MeteringReceiptReqType->Id.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2MeteringReceiptReqType->Id.charactersLen, iso2MeteringReceiptReqType->Id.characters, iso2MeteringReceiptReqType_Id_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					grammarID = 1527;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1527:
			/* StartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SessionID)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[BINARY_HEX]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2MeteringReceiptReqType->SessionID.bytesLen);
							if (errn == 0) {
								errn =  (iso2MeteringReceiptReqType->SessionID.bytesLen) <= iso2MeteringReceiptReqType_SessionID_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
							}
							if (errn == 0) {
								errn = decodeBytes(stream, iso2MeteringReceiptReqType->SessionID.bytesLen, iso2MeteringReceiptReqType->SessionID.bytes);
							}
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SessionID) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1528;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1528:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}MeterInfo)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
							iso2MeteringReceiptReqType->SAScheduleTupleID = (uint8_t)(uint32 + 1);
							iso2MeteringReceiptReqType->SAScheduleTupleID_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SAScheduleTupleID) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1529;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					errn = decode_iso2MeterInfoType(stream, &iso2MeteringReceiptReqType->MeterInfo);
					grammarID = 3;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1529:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}MeterInfo)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2MeterInfoType(stream, &iso2MeteringReceiptReqType->MeterInfo);
					grammarID = 3;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='http://www.w3.org/2000/09/xmldsig#,KeyValueType',  base type name='anyType',  content type='MIXED',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("http://www.w3.org/2000/09/xmldsig#":DSAKeyValue|"http://www.w3.org/2000/09/xmldsig#":RSAKeyValue|(WC[##other:"http://www.w3.org/2000/09/xmldsig#"]))',  derivedBy='RESTRICTION'.  */
static int decode_iso2KeyValueType(bitstream_t* stream, struct iso2KeyValueType* iso2KeyValueType) {
	int grammarID = 1530;
	int done = 0;
	
	init_iso2KeyValueType(iso2KeyValueType);
	
	while(!done) {
		switch(grammarID) {
		case 1530:
			/* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue), START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2DSAKeyValueType(stream, &iso2KeyValueType->DSAKeyValue);
					iso2KeyValueType->DSAKeyValue_isUsed = 1u;
					grammarID = 1531;
					break;
				case 1:
					errn = decode_iso2RSAKeyValueType(stream, &iso2KeyValueType->RSAKeyValue);
					iso2KeyValueType->RSAKeyValue_isUsed = 1u;
					grammarID = 1531;
					break;
				case 2:
					errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					/* TODO unsupported event : START_ELEMENT_GENERIC */
					grammarID = 1531;
					break;
				case 3:
					errn = decodeUnsignedInteger16(stream, &iso2KeyValueType->ANY.charactersLen);
					if (errn == 0) {
						if (iso2KeyValueType->ANY.charactersLen >= 2) {
							iso2KeyValueType->ANY.charactersLen = (uint16_t)(iso2KeyValueType->ANY.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2KeyValueType->ANY.charactersLen, iso2KeyValueType->ANY.characters, iso2KeyValueType_ANY_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					iso2KeyValueType->ANY_isUsed = 1u;
					grammarID = 1532;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1531:
			/* Element[END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				case 1:
					errn = decodeUnsignedInteger16(stream, &iso2KeyValueType->ANY.charactersLen);
					if (errn == 0) {
						if (iso2KeyValueType->ANY.charactersLen >= 2) {
							iso2KeyValueType->ANY.charactersLen = (uint16_t)(iso2KeyValueType->ANY.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2KeyValueType->ANY.charactersLen, iso2KeyValueType->ANY.characters, iso2KeyValueType_ANY_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					iso2KeyValueType->ANY_isUsed = 1u;
					grammarID = 1531;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1532:
			/* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue), START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2DSAKeyValueType(stream, &iso2KeyValueType->DSAKeyValue);
					iso2KeyValueType->DSAKeyValue_isUsed = 1u;
					grammarID = 1531;
					break;
				case 1:
					errn = decode_iso2RSAKeyValueType(stream, &iso2KeyValueType->RSAKeyValue);
					iso2KeyValueType->RSAKeyValue_isUsed = 1u;
					grammarID = 1531;
					break;
				case 2:
					errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					/* TODO unsupported event : START_ELEMENT_GENERIC */
					grammarID = 1531;
					break;
				case 3:
					errn = decodeUnsignedInteger16(stream, &iso2KeyValueType->ANY.charactersLen);
					if (errn == 0) {
						if (iso2KeyValueType->ANY.charactersLen >= 2) {
							iso2KeyValueType->ANY.charactersLen = (uint16_t)(iso2KeyValueType->ANY.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2KeyValueType->ANY.charactersLen, iso2KeyValueType->ANY.characters, iso2KeyValueType_ANY_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					iso2KeyValueType->ANY_isUsed = 1u;
					grammarID = 1532;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,SensorListType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgDataTypes":Sensor{1-255})',  derivedBy='RESTRICTION'.  */
static int decode_iso2SensorListType(bitstream_t* stream, struct iso2SensorListType* iso2SensorListType) {
	int grammarID = 1533;
	int done = 0;
	
	init_iso2SensorListType(iso2SensorListType);
	
	while(!done) {
		switch(grammarID) {
		case 1533:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1534;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1534:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1535;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1535:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1536;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1536:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1537;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1537:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1538;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1538:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1539;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1539:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1540;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1540:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1541;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1541:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1542;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1542:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1543;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1543:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1544;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1544:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1545;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1545:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1546;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1546:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1547;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1547:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1548;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1548:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1549;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1549:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1550;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1550:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1551;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1551:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1552;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1552:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1553;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1553:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1554;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1554:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1555;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1555:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1556;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1556:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1557;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1557:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1558;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1558:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1559;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1559:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1560;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1560:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1561;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1561:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1562;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1562:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1563;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1563:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1564;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1564:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1565;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1565:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1566;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1566:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1567;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1567:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1568;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1568:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1569;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1569:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1570;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1570:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1571;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1571:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1572;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1572:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1573;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1573:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1574;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1574:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1575;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1575:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1576;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1576:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1577;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1577:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1578;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1578:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1579;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1579:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1580;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1580:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1581;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1581:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1582;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1582:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1583;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1583:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1584;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1584:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1585;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1585:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1586;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1586:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1587;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1587:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1588;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1588:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1589;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1589:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1590;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1590:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1591;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1591:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1592;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1592:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1593;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1593:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1594;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1594:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1595;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1595:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1596;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1596:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1597;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1597:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1598;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1598:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1599;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1599:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1600;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1600:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1601;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1601:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1602;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1602:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1603;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1603:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1604;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1604:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1605;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1605:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1606;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1606:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1607;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1607:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1608;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1608:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1609;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1609:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1610;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1610:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1611;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1611:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1612;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1612:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1613;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1613:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1614;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1614:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1615;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1615:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1616;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1616:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1617;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1617:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1618;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1618:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1619;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1619:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1620;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1620:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1621;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1621:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1622;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1622:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1623;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1623:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1624;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1624:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1625;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1625:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1626;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1626:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1627;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1627:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1628;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1628:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1629;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1629:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1630;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1630:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1631;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1631:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1632;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1632:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1633;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1633:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1634;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1634:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1635;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1635:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1636;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1636:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1637;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1637:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1638;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1638:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1639;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1639:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1640;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1640:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1641;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1641:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1642;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1642:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1643;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1643:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1644;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1644:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1645;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1645:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1646;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1646:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1647;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1647:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1648;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1648:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1649;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1649:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1650;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1650:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1651;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1651:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1652;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1652:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1653;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1653:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1654;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1654:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1655;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1655:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1656;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1656:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1657;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1657:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1658;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1658:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1659;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1659:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1660;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1660:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1661;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1661:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1662;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1662:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1663;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1663:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1664;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1664:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1665;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1665:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1666;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1666:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1667;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1667:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1668;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1668:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1669;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1669:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1670;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1670:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1671;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1671:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1672;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1672:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1673;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1673:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1674;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1674:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1675;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1675:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1676;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1676:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1677;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1677:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1678;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1678:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1679;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1679:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1680;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1680:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1681;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1681:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1682;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1682:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1683;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1683:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1684;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1684:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1685;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1685:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1686;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1686:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1687;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1687:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1688;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1688:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1689;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1689:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1690;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1690:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1691;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1691:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1692;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1692:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1693;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1693:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1694;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1694:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1695;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1695:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1696;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1696:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1697;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1697:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1698;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1698:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1699;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1699:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1700;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1700:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1701;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1701:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1702;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1702:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1703;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1703:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1704;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1704:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1705;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1705:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1706;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1706:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1707;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1707:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1708;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1708:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1709;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1709:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1710;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1710:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1711;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1711:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1712;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1712:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1713;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1713:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1714;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1714:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1715;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1715:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1716;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1716:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1717;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1717:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1718;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1718:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1719;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1719:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1720;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1720:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1721;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1721:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1722;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1722:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1723;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1723:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1724;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1724:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1725;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1725:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1726;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1726:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1727;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1727:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1728;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1728:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1729;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1729:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1730;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1730:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1731;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1731:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1732;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1732:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1733;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1733:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1734;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1734:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1735;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1735:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1736;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1736:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1737;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1737:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1738;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1738:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1739;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1739:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1740;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1740:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1741;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1741:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1742;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1742:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1743;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1743:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1744;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1744:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1745;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1745:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1746;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1746:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1747;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1747:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1748;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1748:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1749;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1749:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1750;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1750:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1751;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1751:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1752;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1752:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1753;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1753:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1754;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1754:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1755;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1755:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1756;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1756:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1757;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1757:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1758;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1758:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1759;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1759:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1760;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1760:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1761;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1761:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1762;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1762:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1763;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1763:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1764;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1764:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1765;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1765:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1766;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1766:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1767;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1767:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1768;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1768:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1769;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1769:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1770;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1770:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1771;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1771:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1772;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1772:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1773;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1773:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1774;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1774:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1775;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1775:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1776;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1776:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1777;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1777:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1778;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1778:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1779;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1779:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1780;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1780:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1781;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1781:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1782;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1782:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1783;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1783:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1784;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1784:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1785;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1785:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1786;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1786:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1787;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1787:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorListType->Sensor.arrayLen < iso2SensorListType_Sensor_ARRAY_SIZE) {
						errn = decode_iso2SensorType(stream, &iso2SensorListType->Sensor.array[iso2SensorListType->Sensor.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 3;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,CurrentDemandReqType',  base type name='ChargeLoopReqType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(("urn:iso:15118:2:2016:MsgBody":EVTargetEnergyRequest,"urn:iso:15118:2:2016:MsgBody":EVMaximumEnergyRequest{0-1},"urn:iso:15118:2:2016:MsgBody":EVMinimumEnergyRequest{0-1},"urn:iso:15118:2:2016:MsgBody":DisplayParameters{0-1}),("urn:iso:15118:2:2016:MsgBody":EVTargetCurrent,"urn:iso:15118:2:2016:MsgBody":EVTargetVoltage,"urn:iso:15118:2:2016:MsgBody":EVMaximumCurrent{0-1},"urn:iso:15118:2:2016:MsgBody":EVMaximumPower{0-1},"urn:iso:15118:2:2016:MsgBody":EVMaximumVoltage{0-1}))',  derivedBy='EXTENSION'.  */
static int decode_iso2CurrentDemandReqType(bitstream_t* stream, struct iso2CurrentDemandReqType* iso2CurrentDemandReqType) {
	int grammarID = 1788;
	int done = 0;
	
	init_iso2CurrentDemandReqType(iso2CurrentDemandReqType);
	
	while(!done) {
		switch(grammarID) {
		case 1788:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVTargetEnergyRequest)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2CurrentDemandReqType->EVTargetEnergyRequest);
					grammarID = 1789;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1789:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMaximumEnergyRequest), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMinimumEnergyRequest), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}DisplayParameters), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVTargetCurrent)] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2CurrentDemandReqType->EVMaximumEnergyRequest);
					iso2CurrentDemandReqType->EVMaximumEnergyRequest_isUsed = 1u;
					grammarID = 1790;
					break;
				case 1:
					errn = decode_iso2PhysicalValueType(stream, &iso2CurrentDemandReqType->EVMinimumEnergyRequest);
					iso2CurrentDemandReqType->EVMinimumEnergyRequest_isUsed = 1u;
					grammarID = 1791;
					break;
				case 2:
					errn = decode_iso2DisplayParametersType(stream, &iso2CurrentDemandReqType->DisplayParameters);
					iso2CurrentDemandReqType->DisplayParameters_isUsed = 1u;
					grammarID = 1792;
					break;
				case 3:
					errn = decode_iso2PhysicalValueType(stream, &iso2CurrentDemandReqType->EVTargetCurrent);
					grammarID = 1793;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1790:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMinimumEnergyRequest), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}DisplayParameters), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVTargetCurrent)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2CurrentDemandReqType->EVMinimumEnergyRequest);
					iso2CurrentDemandReqType->EVMinimumEnergyRequest_isUsed = 1u;
					grammarID = 1791;
					break;
				case 1:
					errn = decode_iso2DisplayParametersType(stream, &iso2CurrentDemandReqType->DisplayParameters);
					iso2CurrentDemandReqType->DisplayParameters_isUsed = 1u;
					grammarID = 1792;
					break;
				case 2:
					errn = decode_iso2PhysicalValueType(stream, &iso2CurrentDemandReqType->EVTargetCurrent);
					grammarID = 1793;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1791:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}DisplayParameters), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVTargetCurrent)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2DisplayParametersType(stream, &iso2CurrentDemandReqType->DisplayParameters);
					iso2CurrentDemandReqType->DisplayParameters_isUsed = 1u;
					grammarID = 1792;
					break;
				case 1:
					errn = decode_iso2PhysicalValueType(stream, &iso2CurrentDemandReqType->EVTargetCurrent);
					grammarID = 1793;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1792:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVTargetCurrent)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2CurrentDemandReqType->EVTargetCurrent);
					grammarID = 1793;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1793:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVTargetVoltage)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2CurrentDemandReqType->EVTargetVoltage);
					grammarID = 1794;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1794:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMaximumCurrent), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMaximumPower), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMaximumVoltage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2CurrentDemandReqType->EVMaximumCurrent);
					iso2CurrentDemandReqType->EVMaximumCurrent_isUsed = 1u;
					grammarID = 1795;
					break;
				case 1:
					errn = decode_iso2PhysicalValueType(stream, &iso2CurrentDemandReqType->EVMaximumPower);
					iso2CurrentDemandReqType->EVMaximumPower_isUsed = 1u;
					grammarID = 1796;
					break;
				case 2:
					errn = decode_iso2PhysicalValueType(stream, &iso2CurrentDemandReqType->EVMaximumVoltage);
					iso2CurrentDemandReqType->EVMaximumVoltage_isUsed = 1u;
					grammarID = 3;
					break;
				case 3:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1795:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMaximumPower), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMaximumVoltage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2CurrentDemandReqType->EVMaximumPower);
					iso2CurrentDemandReqType->EVMaximumPower_isUsed = 1u;
					grammarID = 1796;
					break;
				case 1:
					errn = decode_iso2PhysicalValueType(stream, &iso2CurrentDemandReqType->EVMaximumVoltage);
					iso2CurrentDemandReqType->EVMaximumVoltage_isUsed = 1u;
					grammarID = 3;
					break;
				case 2:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1796:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMaximumVoltage), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2CurrentDemandReqType->EVMaximumVoltage);
					iso2CurrentDemandReqType->EVMaximumVoltage_isUsed = 1u;
					grammarID = 3;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,FinePositioningSetupReqType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgDataTypes":EVFinePositioningSetupParameters{0-1})',  derivedBy='EXTENSION'.  */
static int decode_iso2FinePositioningSetupReqType(bitstream_t* stream, struct iso2FinePositioningSetupReqType* iso2FinePositioningSetupReqType) {
	int grammarID = 1797;
	int done = 0;
	
	init_iso2FinePositioningSetupReqType(iso2FinePositioningSetupReqType);
	
	while(!done) {
		switch(grammarID) {
		case 1797:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVFinePositioningSetupParameters), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}LFA_EVFinePositioningSetupParameters), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2EVFinePositioningSetupParametersType(stream, &iso2FinePositioningSetupReqType->EVFinePositioningSetupParameters);
					iso2FinePositioningSetupReqType->EVFinePositioningSetupParameters_isUsed = 1u;
					grammarID = 3;
					break;
				case 1:
					errn = decode_iso2LFA_EVFinePositioningSetupParametersType(stream, &iso2FinePositioningSetupReqType->LFA_EVFinePositioningSetupParameters);
					iso2FinePositioningSetupReqType->LFA_EVFinePositioningSetupParameters_isUsed = 1u;
					grammarID = 3;
					break;
				case 2:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,LFA_EVFinePositioningSetupParametersType',  base type name='EVFinePositioningSetupParametersType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgDataTypes":NumberOfSensors,"urn:iso:15118:2:2016:MsgDataTypes":SensorList,"urn:iso:15118:2:2016:MsgDataTypes":SensorOrder,"urn:iso:15118:2:2016:MsgDataTypes":SignalPulseDuration,"urn:iso:15118:2:2016:MsgDataTypes":SignalSeparationTime,"urn:iso:15118:2:2016:MsgDataTypes":PackageSeparationTime,"urn:iso:15118:2:2016:MsgDataTypes":AlignmentOffset)',  derivedBy='EXTENSION'.  */
static int decode_iso2LFA_EVFinePositioningSetupParametersType(bitstream_t* stream, struct iso2LFA_EVFinePositioningSetupParametersType* iso2LFA_EVFinePositioningSetupParametersType) {
	int grammarID = 1798;
	int done = 0;
	
	init_iso2LFA_EVFinePositioningSetupParametersType(iso2LFA_EVFinePositioningSetupParametersType);
	
	while(!done) {
		switch(grammarID) {
		case 1798:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}NumberOfSensors)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
							iso2LFA_EVFinePositioningSetupParametersType->NumberOfSensors = (uint8_t)(uint32 + 0);
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}NumberOfSensors) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1799;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1799:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorList)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2SensorListType(stream, &iso2LFA_EVFinePositioningSetupParametersType->SensorList);
					grammarID = 1800;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1800:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorOrder)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2SensorOrderListType(stream, &iso2LFA_EVFinePositioningSetupParametersType->SensorOrder);
					grammarID = 1801;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1801:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SignalPulseDuration)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
							iso2LFA_EVFinePositioningSetupParametersType->SignalPulseDuration = (uint8_t)(uint32 + 0);
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SignalPulseDuration) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1802;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1802:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SignalSeparationTime)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
							iso2LFA_EVFinePositioningSetupParametersType->SignalSeparationTime = (uint8_t)(uint32 + 0);
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SignalSeparationTime) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1803;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1803:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}PackageSeparationTime)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
							iso2LFA_EVFinePositioningSetupParametersType->PackageSeparationTime = (uint8_t)(uint32 + 0);
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}PackageSeparationTime) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1804;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1804:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}AlignmentOffset)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2LFA_EVFinePositioningSetupParametersType->AlignmentOffset);
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}AlignmentOffset) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,SAScheduleTupleType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgDataTypes":SAScheduleTupleID,"urn:iso:15118:2:2016:MsgDataTypes":PMaxSchedule,"urn:iso:15118:2:2016:MsgDataTypes":PMaxDischargeSchedule{0-1},"urn:iso:15118:2:2016:MsgDataTypes":SalesTariff{0-1},"urn:iso:15118:2:2016:MsgDataTypes":BuyBackTariff{0-1})',  derivedBy='RESTRICTION'.  */
static int decode_iso2SAScheduleTupleType(bitstream_t* stream, struct iso2SAScheduleTupleType* iso2SAScheduleTupleType) {
	int grammarID = 1805;
	int done = 0;
	
	init_iso2SAScheduleTupleType(iso2SAScheduleTupleType);
	
	while(!done) {
		switch(grammarID) {
		case 1805:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SAScheduleTupleID)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
							iso2SAScheduleTupleType->SAScheduleTupleID = (uint8_t)(uint32 + 1);
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SAScheduleTupleID) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1806;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1806:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}PMaxSchedule)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PMaxScheduleType(stream, &iso2SAScheduleTupleType->PMaxSchedule);
					grammarID = 1807;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1807:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}PMaxDischargeSchedule), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SalesTariff), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BuyBackTariff), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PMaxScheduleType(stream, &iso2SAScheduleTupleType->PMaxDischargeSchedule);
					iso2SAScheduleTupleType->PMaxDischargeSchedule_isUsed = 1u;
					grammarID = 1808;
					break;
				case 1:
					errn = decode_iso2SalesTariffType(stream, &iso2SAScheduleTupleType->SalesTariff);
					iso2SAScheduleTupleType->SalesTariff_isUsed = 1u;
					grammarID = 1809;
					break;
				case 2:
					errn = decode_iso2SalesTariffType(stream, &iso2SAScheduleTupleType->BuyBackTariff);
					iso2SAScheduleTupleType->BuyBackTariff_isUsed = 1u;
					grammarID = 3;
					break;
				case 3:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1808:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SalesTariff), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BuyBackTariff), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2SalesTariffType(stream, &iso2SAScheduleTupleType->SalesTariff);
					iso2SAScheduleTupleType->SalesTariff_isUsed = 1u;
					grammarID = 1809;
					break;
				case 1:
					errn = decode_iso2SalesTariffType(stream, &iso2SAScheduleTupleType->BuyBackTariff);
					iso2SAScheduleTupleType->BuyBackTariff_isUsed = 1u;
					grammarID = 3;
					break;
				case 2:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1809:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BuyBackTariff), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2SalesTariffType(stream, &iso2SAScheduleTupleType->BuyBackTariff);
					iso2SAScheduleTupleType->BuyBackTariff_isUsed = 1u;
					grammarID = 3;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,WPT_EVSEChargeParameterType',  base type name='EVSEEnergyTransferParameterType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgDataTypes":EVSEMaximumPower,"urn:iso:15118:2:2016:MsgDataTypes":EVSEMinimumPower)',  derivedBy='EXTENSION'.  */
static int decode_iso2WPT_EVSEChargeParameterType(bitstream_t* stream, struct iso2WPT_EVSEChargeParameterType* iso2WPT_EVSEChargeParameterType) {
	int grammarID = 1810;
	int done = 0;
	
	init_iso2WPT_EVSEChargeParameterType(iso2WPT_EVSEChargeParameterType);
	
	while(!done) {
		switch(grammarID) {
		case 1810:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEMaximumPower)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2WPT_EVSEChargeParameterType->EVSEMaximumPower);
					grammarID = 1811;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1811:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEMinimumPower)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2WPT_EVSEChargeParameterType->EVSEMinimumPower);
					grammarID = 3;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,FinePositioningResType',  base type name='V2GResponseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(("urn:iso:15118:2:2016:MsgBody":ResponseCode,"urn:iso:15118:2:2016:MsgBody":EVSEStatus{0-1}),("urn:iso:15118:2:2016:MsgBody":EVSEProcessing,"urn:iso:15118:2:2016:MsgDataTypes":EVSEFinePositioningParameters{0-1}))',  derivedBy='EXTENSION'.  */
static int decode_iso2FinePositioningResType(bitstream_t* stream, struct iso2FinePositioningResType* iso2FinePositioningResType) {
	int grammarID = 1812;
	int done = 0;
	
	init_iso2FinePositioningResType(iso2FinePositioningResType);
	
	while(!done) {
		switch(grammarID) {
		case 1812:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 5, &uint32);
							iso2FinePositioningResType->ResponseCode = (iso2responseCodeType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1813;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1813:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEProcessing)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2EVSEStatusType(stream, &iso2FinePositioningResType->EVSEStatus);
					iso2FinePositioningResType->EVSEStatus_isUsed = 1u;
					grammarID = 1814;
					break;
				case 1:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
							iso2FinePositioningResType->EVSEProcessing = (iso2EVSEProcessingType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEProcessing) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1815;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1814:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEProcessing)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
							iso2FinePositioningResType->EVSEProcessing = (iso2EVSEProcessingType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEProcessing) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1815;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1815:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEFinePositioningParameters), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Generic_EVSEFinePositioningParameters), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}LFA_EVSEFinePositioningParameters), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MV_EVSEFinePositioningParameters), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2EVSEFinePositioningParametersType(stream, &iso2FinePositioningResType->EVSEFinePositioningParameters);
					iso2FinePositioningResType->EVSEFinePositioningParameters_isUsed = 1u;
					grammarID = 3;
					break;
				case 1:
					errn = decode_iso2Generic_EVSEFinePositioningParametersType(stream, &iso2FinePositioningResType->Generic_EVSEFinePositioningParameters);
					iso2FinePositioningResType->Generic_EVSEFinePositioningParameters_isUsed = 1u;
					grammarID = 3;
					break;
				case 2:
					errn = decode_iso2LFA_EVSEFinePositioningParametersType(stream, &iso2FinePositioningResType->LFA_EVSEFinePositioningParameters);
					iso2FinePositioningResType->LFA_EVSEFinePositioningParameters_isUsed = 1u;
					grammarID = 3;
					break;
				case 3:
					errn = decode_iso2MV_EVSEFinePositioningParametersType(stream, &iso2FinePositioningResType->MV_EVSEFinePositioningParameters);
					iso2FinePositioningResType->MV_EVSEFinePositioningParameters_isUsed = 1u;
					grammarID = 3;
					break;
				case 4:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,BodyBaseType',  base type name='anyType',  content type='EMPTY',  isAbstract='true',  hasTypeId='false',  final='0',  block='0',  derivedBy='RESTRICTION'.  */
static int decode_iso2BodyBaseType(bitstream_t* stream, struct iso2BodyBaseType* iso2BodyBaseType) {
	int grammarID = 674;
	int done = 0;
	
	init_iso2BodyBaseType(iso2BodyBaseType);
	
	while(!done) {
		switch(grammarID) {
		case 674:
			/* FirstStartTag[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,ServiceDetailResType',  base type name='V2GResponseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(("urn:iso:15118:2:2016:MsgBody":ResponseCode,"urn:iso:15118:2:2016:MsgBody":EVSEStatus{0-1}),("urn:iso:15118:2:2016:MsgBody":ServiceID,"urn:iso:15118:2:2016:MsgBody":ServiceParameterList{0-1}))',  derivedBy='EXTENSION'.  */
static int decode_iso2ServiceDetailResType(bitstream_t* stream, struct iso2ServiceDetailResType* iso2ServiceDetailResType) {
	int grammarID = 1816;
	int done = 0;
	
	init_iso2ServiceDetailResType(iso2ServiceDetailResType);
	
	while(!done) {
		switch(grammarID) {
		case 1816:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 5, &uint32);
							iso2ServiceDetailResType->ResponseCode = (iso2responseCodeType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1817;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1817:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ServiceID)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2EVSEStatusType(stream, &iso2ServiceDetailResType->EVSEStatus);
					iso2ServiceDetailResType->EVSEStatus_isUsed = 1u;
					grammarID = 1818;
					break;
				case 1:
					/* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2ServiceDetailResType->ServiceID);
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ServiceID) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1819;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1818:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ServiceID)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2ServiceDetailResType->ServiceID);
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ServiceID) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1819;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1819:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ServiceParameterList), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2ServiceParameterListType(stream, &iso2ServiceDetailResType->ServiceParameterList);
					iso2ServiceDetailResType->ServiceParameterList_isUsed = 1u;
					grammarID = 3;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,PowerDeliveryReqType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgBody":ChargeProgress,"urn:iso:15118:2:2016:MsgBody":EVOperation{0-1},"urn:iso:15118:2:2016:MsgBody":SAScheduleTupleID{0-1},"urn:iso:15118:2:2016:MsgBody":ChargingProfile{0-1})',  derivedBy='EXTENSION'.  */
static int decode_iso2PowerDeliveryReqType(bitstream_t* stream, struct iso2PowerDeliveryReqType* iso2PowerDeliveryReqType) {
	int grammarID = 1820;
	int done = 0;
	
	init_iso2PowerDeliveryReqType(iso2PowerDeliveryReqType);
	
	while(!done) {
		switch(grammarID) {
		case 1820:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ChargeProgress)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
							iso2PowerDeliveryReqType->ChargeProgress = (iso2chargeProgressType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ChargeProgress) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1821;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1821:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVOperation), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ChargingProfile), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 1, &uint32);
							iso2PowerDeliveryReqType->EVOperation = (iso2EVOperationType) uint32;
							iso2PowerDeliveryReqType->EVOperation_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVOperation) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1822;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
							iso2PowerDeliveryReqType->SAScheduleTupleID = (uint8_t)(uint32 + 1);
							iso2PowerDeliveryReqType->SAScheduleTupleID_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SAScheduleTupleID) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1823;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 2:
					errn = decode_iso2ChargingProfileType(stream, &iso2PowerDeliveryReqType->ChargingProfile);
					iso2PowerDeliveryReqType->ChargingProfile_isUsed = 1u;
					grammarID = 3;
					break;
				case 3:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1822:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ChargingProfile), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
							iso2PowerDeliveryReqType->SAScheduleTupleID = (uint8_t)(uint32 + 1);
							iso2PowerDeliveryReqType->SAScheduleTupleID_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SAScheduleTupleID) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1823;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					errn = decode_iso2ChargingProfileType(stream, &iso2PowerDeliveryReqType->ChargingProfile);
					iso2PowerDeliveryReqType->ChargingProfile_isUsed = 1u;
					grammarID = 3;
					break;
				case 2:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1823:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ChargingProfile), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2ChargingProfileType(stream, &iso2PowerDeliveryReqType->ChargingProfile);
					iso2PowerDeliveryReqType->ChargingProfile_isUsed = 1u;
					grammarID = 3;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,PairingResType',  base type name='V2GResponseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(("urn:iso:15118:2:2016:MsgBody":ResponseCode,"urn:iso:15118:2:2016:MsgBody":EVSEStatus{0-1}),("urn:iso:15118:2:2016:MsgBody":EVSEProcessing,"urn:iso:15118:2:2016:MsgBody":PairingParameters{0-1}))',  derivedBy='EXTENSION'.  */
static int decode_iso2PairingResType(bitstream_t* stream, struct iso2PairingResType* iso2PairingResType) {
	int grammarID = 1824;
	int done = 0;
	
	init_iso2PairingResType(iso2PairingResType);
	
	while(!done) {
		switch(grammarID) {
		case 1824:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 5, &uint32);
							iso2PairingResType->ResponseCode = (iso2responseCodeType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1825;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1825:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEProcessing)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2EVSEStatusType(stream, &iso2PairingResType->EVSEStatus);
					iso2PairingResType->EVSEStatus_isUsed = 1u;
					grammarID = 1826;
					break;
				case 1:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
							iso2PairingResType->EVSEProcessing = (iso2EVSEProcessingType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEProcessing) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1827;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1826:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEProcessing)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
							iso2PairingResType->EVSEProcessing = (iso2EVSEProcessingType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEProcessing) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1827;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1827:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PairingParameters), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2ParameterSetType(stream, &iso2PairingResType->PairingParameters);
					iso2PairingResType->PairingParameters_isUsed = 1u;
					grammarID = 3;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,AuthorizationReqType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgBody":GenChallenge{0-1})',  derivedBy='EXTENSION'.  */
static int decode_iso2AuthorizationReqType(bitstream_t* stream, struct iso2AuthorizationReqType* iso2AuthorizationReqType) {
	int grammarID = 1828;
	int done = 0;
	
	init_iso2AuthorizationReqType(iso2AuthorizationReqType);
	
	while(!done) {
		switch(grammarID) {
		case 1828:
			/* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2016:MsgBody}Id), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}GenChallenge), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decodeUnsignedInteger16(stream, &iso2AuthorizationReqType->Id.charactersLen);
					if (errn == 0) {
						if (iso2AuthorizationReqType->Id.charactersLen >= 2) {
							iso2AuthorizationReqType->Id.charactersLen = (uint16_t)(iso2AuthorizationReqType->Id.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2AuthorizationReqType->Id.charactersLen, iso2AuthorizationReqType->Id.characters, iso2AuthorizationReqType_Id_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					iso2AuthorizationReqType->Id_isUsed = 1u;
					grammarID = 1829;
					break;
				case 1:
					/* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2AuthorizationReqType->GenChallenge.bytesLen);
							if (errn == 0) {
								errn =  (iso2AuthorizationReqType->GenChallenge.bytesLen) <= iso2AuthorizationReqType_GenChallenge_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
							}
							if (errn == 0) {
								errn = decodeBytes(stream, iso2AuthorizationReqType->GenChallenge.bytesLen, iso2AuthorizationReqType->GenChallenge.bytes);
							}
							iso2AuthorizationReqType->GenChallenge_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}GenChallenge) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 2:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1829:
			/* StartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}GenChallenge), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2AuthorizationReqType->GenChallenge.bytesLen);
							if (errn == 0) {
								errn =  (iso2AuthorizationReqType->GenChallenge.bytesLen) <= iso2AuthorizationReqType_GenChallenge_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
							}
							if (errn == 0) {
								errn = decodeBytes(stream, iso2AuthorizationReqType->GenChallenge.bytesLen, iso2AuthorizationReqType->GenChallenge.bytes);
							}
							iso2AuthorizationReqType->GenChallenge_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}GenChallenge) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,ParameterSetType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgDataTypes":ParameterSetID,"urn:iso:15118:2:2016:MsgDataTypes":Parameter{1-16})',  derivedBy='RESTRICTION'.  */
static int decode_iso2ParameterSetType(bitstream_t* stream, struct iso2ParameterSetType* iso2ParameterSetType) {
	int grammarID = 1830;
	int done = 0;
	
	init_iso2ParameterSetType(iso2ParameterSetType);
	
	while(!done) {
		switch(grammarID) {
		case 1830:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSetID)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2ParameterSetType->ParameterSetID);
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSetID) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1831;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1831:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Parameter)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ParameterSetType->Parameter.arrayLen < iso2ParameterSetType_Parameter_ARRAY_SIZE) {
						errn = decode_iso2ParameterType(stream, &iso2ParameterSetType->Parameter.array[iso2ParameterSetType->Parameter.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1832;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1832:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Parameter), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ParameterSetType->Parameter.arrayLen < iso2ParameterSetType_Parameter_ARRAY_SIZE) {
						errn = decode_iso2ParameterType(stream, &iso2ParameterSetType->Parameter.array[iso2ParameterSetType->Parameter.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1833;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1833:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Parameter), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ParameterSetType->Parameter.arrayLen < iso2ParameterSetType_Parameter_ARRAY_SIZE) {
						errn = decode_iso2ParameterType(stream, &iso2ParameterSetType->Parameter.array[iso2ParameterSetType->Parameter.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1834;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1834:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Parameter), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ParameterSetType->Parameter.arrayLen < iso2ParameterSetType_Parameter_ARRAY_SIZE) {
						errn = decode_iso2ParameterType(stream, &iso2ParameterSetType->Parameter.array[iso2ParameterSetType->Parameter.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1835;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1835:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Parameter), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ParameterSetType->Parameter.arrayLen < iso2ParameterSetType_Parameter_ARRAY_SIZE) {
						errn = decode_iso2ParameterType(stream, &iso2ParameterSetType->Parameter.array[iso2ParameterSetType->Parameter.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1836;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1836:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Parameter), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ParameterSetType->Parameter.arrayLen < iso2ParameterSetType_Parameter_ARRAY_SIZE) {
						errn = decode_iso2ParameterType(stream, &iso2ParameterSetType->Parameter.array[iso2ParameterSetType->Parameter.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1837;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1837:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Parameter), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ParameterSetType->Parameter.arrayLen < iso2ParameterSetType_Parameter_ARRAY_SIZE) {
						errn = decode_iso2ParameterType(stream, &iso2ParameterSetType->Parameter.array[iso2ParameterSetType->Parameter.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1838;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1838:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Parameter), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ParameterSetType->Parameter.arrayLen < iso2ParameterSetType_Parameter_ARRAY_SIZE) {
						errn = decode_iso2ParameterType(stream, &iso2ParameterSetType->Parameter.array[iso2ParameterSetType->Parameter.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1839;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1839:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Parameter), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ParameterSetType->Parameter.arrayLen < iso2ParameterSetType_Parameter_ARRAY_SIZE) {
						errn = decode_iso2ParameterType(stream, &iso2ParameterSetType->Parameter.array[iso2ParameterSetType->Parameter.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1840;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1840:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Parameter), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ParameterSetType->Parameter.arrayLen < iso2ParameterSetType_Parameter_ARRAY_SIZE) {
						errn = decode_iso2ParameterType(stream, &iso2ParameterSetType->Parameter.array[iso2ParameterSetType->Parameter.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1841;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1841:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Parameter), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ParameterSetType->Parameter.arrayLen < iso2ParameterSetType_Parameter_ARRAY_SIZE) {
						errn = decode_iso2ParameterType(stream, &iso2ParameterSetType->Parameter.array[iso2ParameterSetType->Parameter.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1842;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1842:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Parameter), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ParameterSetType->Parameter.arrayLen < iso2ParameterSetType_Parameter_ARRAY_SIZE) {
						errn = decode_iso2ParameterType(stream, &iso2ParameterSetType->Parameter.array[iso2ParameterSetType->Parameter.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1843;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1843:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Parameter), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ParameterSetType->Parameter.arrayLen < iso2ParameterSetType_Parameter_ARRAY_SIZE) {
						errn = decode_iso2ParameterType(stream, &iso2ParameterSetType->Parameter.array[iso2ParameterSetType->Parameter.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1844;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1844:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Parameter), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ParameterSetType->Parameter.arrayLen < iso2ParameterSetType_Parameter_ARRAY_SIZE) {
						errn = decode_iso2ParameterType(stream, &iso2ParameterSetType->Parameter.array[iso2ParameterSetType->Parameter.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1845;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1845:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Parameter), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ParameterSetType->Parameter.arrayLen < iso2ParameterSetType_Parameter_ARRAY_SIZE) {
						errn = decode_iso2ParameterType(stream, &iso2ParameterSetType->Parameter.array[iso2ParameterSetType->Parameter.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1846;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1846:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Parameter), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ParameterSetType->Parameter.arrayLen < iso2ParameterSetType_Parameter_ARRAY_SIZE) {
						errn = decode_iso2ParameterType(stream, &iso2ParameterSetType->Parameter.array[iso2ParameterSetType->Parameter.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 3;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='http://www.w3.org/2000/09/xmldsig#,SPKIDataType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("http://www.w3.org/2000/09/xmldsig#":SPKISexp,(WC[##other:"http://www.w3.org/2000/09/xmldsig#"]){0-1}){1-UNBOUNDED}',  derivedBy='RESTRICTION'.  */
static int decode_iso2SPKIDataType(bitstream_t* stream, struct iso2SPKIDataType* iso2SPKIDataType) {
	int grammarID = 1847;
	int done = 0;
	
	init_iso2SPKIDataType(iso2SPKIDataType);
	
	while(!done) {
		switch(grammarID) {
		case 1847:
			/* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SPKIDataType->SPKISexp.arrayLen < iso2SPKIDataType_SPKISexp_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2SPKIDataType->SPKISexp.array[iso2SPKIDataType->SPKISexp.arrayLen].bytesLen);
								if (errn == 0) {
									errn =  (iso2SPKIDataType->SPKISexp.array[iso2SPKIDataType->SPKISexp.arrayLen].bytesLen) <= iso2SPKIDataType_SPKISexp_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
								}
								if (errn == 0) {
									errn = decodeBytes(stream, iso2SPKIDataType->SPKISexp.array[iso2SPKIDataType->SPKISexp.arrayLen].bytesLen, iso2SPKIDataType->SPKISexp.array[iso2SPKIDataType->SPKISexp.arrayLen].bytes);
								}
								iso2SPKIDataType->SPKISexp.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1848;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1848:
			/* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp), START_ELEMENT_GENERIC, END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SPKIDataType->SPKISexp.arrayLen < iso2SPKIDataType_SPKISexp_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2SPKIDataType->SPKISexp.array[iso2SPKIDataType->SPKISexp.arrayLen].bytesLen);
								if (errn == 0) {
									errn =  (iso2SPKIDataType->SPKISexp.array[iso2SPKIDataType->SPKISexp.arrayLen].bytesLen) <= iso2SPKIDataType_SPKISexp_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
								}
								if (errn == 0) {
									errn = decodeBytes(stream, iso2SPKIDataType->SPKISexp.array[iso2SPKIDataType->SPKISexp.arrayLen].bytesLen, iso2SPKIDataType->SPKISexp.array[iso2SPKIDataType->SPKISexp.arrayLen].bytes);
								}
								iso2SPKIDataType->SPKISexp.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1848;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					/* TODO unsupported event : START_ELEMENT_GENERIC */
					grammarID = 1849;
					break;
				case 2:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1849:
			/* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SPKIDataType->SPKISexp.arrayLen < iso2SPKIDataType_SPKISexp_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2SPKIDataType->SPKISexp.array[iso2SPKIDataType->SPKISexp.arrayLen].bytesLen);
								if (errn == 0) {
									errn =  (iso2SPKIDataType->SPKISexp.array[iso2SPKIDataType->SPKISexp.arrayLen].bytesLen) <= iso2SPKIDataType_SPKISexp_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
								}
								if (errn == 0) {
									errn = decodeBytes(stream, iso2SPKIDataType->SPKISexp.array[iso2SPKIDataType->SPKISexp.arrayLen].bytesLen, iso2SPKIDataType->SPKISexp.array[iso2SPKIDataType->SPKISexp.arrayLen].bytes);
								}
								iso2SPKIDataType->SPKISexp.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1848;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,PaymentDetailsResType',  base type name='V2GResponseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(("urn:iso:15118:2:2016:MsgBody":ResponseCode,"urn:iso:15118:2:2016:MsgBody":EVSEStatus{0-1}),("urn:iso:15118:2:2016:MsgBody":GenChallenge,"urn:iso:15118:2:2016:MsgBody":EVSETimeStamp))',  derivedBy='EXTENSION'.  */
static int decode_iso2PaymentDetailsResType(bitstream_t* stream, struct iso2PaymentDetailsResType* iso2PaymentDetailsResType) {
	int grammarID = 1850;
	int done = 0;
	
	init_iso2PaymentDetailsResType(iso2PaymentDetailsResType);
	
	while(!done) {
		switch(grammarID) {
		case 1850:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 5, &uint32);
							iso2PaymentDetailsResType->ResponseCode = (iso2responseCodeType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1851;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1851:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}GenChallenge)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2EVSEStatusType(stream, &iso2PaymentDetailsResType->EVSEStatus);
					iso2PaymentDetailsResType->EVSEStatus_isUsed = 1u;
					grammarID = 1852;
					break;
				case 1:
					/* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2PaymentDetailsResType->GenChallenge.bytesLen);
							if (errn == 0) {
								errn =  (iso2PaymentDetailsResType->GenChallenge.bytesLen) <= iso2PaymentDetailsResType_GenChallenge_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
							}
							if (errn == 0) {
								errn = decodeBytes(stream, iso2PaymentDetailsResType->GenChallenge.bytesLen, iso2PaymentDetailsResType->GenChallenge.bytes);
							}
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}GenChallenge) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1853;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1852:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}GenChallenge)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2PaymentDetailsResType->GenChallenge.bytesLen);
							if (errn == 0) {
								errn =  (iso2PaymentDetailsResType->GenChallenge.bytesLen) <= iso2PaymentDetailsResType_GenChallenge_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
							}
							if (errn == 0) {
								errn = decodeBytes(stream, iso2PaymentDetailsResType->GenChallenge.bytesLen, iso2PaymentDetailsResType->GenChallenge.bytes);
							}
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}GenChallenge) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1853;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1853:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSETimeStamp)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeInteger64(stream, &iso2PaymentDetailsResType->EVSETimeStamp);
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSETimeStamp) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='http://www.w3.org/2000/09/xmldsig#,SignatureMethodType',  base type name='anyType',  content type='MIXED',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("http://www.w3.org/2000/09/xmldsig#":HMACOutputLength{0-1},(WC[##other:"http://www.w3.org/2000/09/xmldsig#"]){0-UNBOUNDED})',  derivedBy='RESTRICTION'.  */
static int decode_iso2SignatureMethodType(bitstream_t* stream, struct iso2SignatureMethodType* iso2SignatureMethodType) {
	int grammarID = 1854;
	int done = 0;
	
	init_iso2SignatureMethodType(iso2SignatureMethodType);
	
	while(!done) {
		switch(grammarID) {
		case 1854:
			/* FirstStartTag[ATTRIBUTE[STRING](Algorithm)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decodeUnsignedInteger16(stream, &iso2SignatureMethodType->Algorithm.charactersLen);
					if (errn == 0) {
						if (iso2SignatureMethodType->Algorithm.charactersLen >= 2) {
							iso2SignatureMethodType->Algorithm.charactersLen = (uint16_t)(iso2SignatureMethodType->Algorithm.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2SignatureMethodType->Algorithm.charactersLen, iso2SignatureMethodType->Algorithm.characters, iso2SignatureMethodType_Algorithm_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					grammarID = 1855;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1855:
			/* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeInteger64(stream, &iso2SignatureMethodType->HMACOutputLength);
							iso2SignatureMethodType->HMACOutputLength_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 685;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					/* TODO unsupported event : START_ELEMENT_GENERIC */
					grammarID = 685;
					break;
				case 2:
					done = 1;
					grammarID = 4;
					break;
				case 3:
					errn = decodeUnsignedInteger16(stream, &iso2SignatureMethodType->ANY.charactersLen);
					if (errn == 0) {
						if (iso2SignatureMethodType->ANY.charactersLen >= 2) {
							iso2SignatureMethodType->ANY.charactersLen = (uint16_t)(iso2SignatureMethodType->ANY.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2SignatureMethodType->ANY.charactersLen, iso2SignatureMethodType->ANY.characters, iso2SignatureMethodType_ANY_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					iso2SignatureMethodType->ANY_isUsed = 1u;
					grammarID = 1856;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 685:
			/* Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					/* TODO unsupported event : START_ELEMENT_GENERIC */
					grammarID = 685;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				case 2:
					errn = decodeUnsignedInteger16(stream, &iso2SignatureMethodType->ANY.charactersLen);
					if (errn == 0) {
						if (iso2SignatureMethodType->ANY.charactersLen >= 2) {
							iso2SignatureMethodType->ANY.charactersLen = (uint16_t)(iso2SignatureMethodType->ANY.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2SignatureMethodType->ANY.charactersLen, iso2SignatureMethodType->ANY.characters, iso2SignatureMethodType_ANY_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					iso2SignatureMethodType->ANY_isUsed = 1u;
					grammarID = 685;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1856:
			/* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeInteger64(stream, &iso2SignatureMethodType->HMACOutputLength);
							iso2SignatureMethodType->HMACOutputLength_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 685;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					/* TODO unsupported event : START_ELEMENT_GENERIC */
					grammarID = 685;
					break;
				case 2:
					done = 1;
					grammarID = 4;
					break;
				case 3:
					errn = decodeUnsignedInteger16(stream, &iso2SignatureMethodType->ANY.charactersLen);
					if (errn == 0) {
						if (iso2SignatureMethodType->ANY.charactersLen >= 2) {
							iso2SignatureMethodType->ANY.charactersLen = (uint16_t)(iso2SignatureMethodType->ANY.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2SignatureMethodType->ANY.charactersLen, iso2SignatureMethodType->ANY.characters, iso2SignatureMethodType_ANY_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					iso2SignatureMethodType->ANY_isUsed = 1u;
					grammarID = 1856;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,AC_BidirectionalControlResType',  base type name='V2GResponseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(("urn:iso:15118:2:2016:MsgBody":ResponseCode,"urn:iso:15118:2:2016:MsgBody":EVSEStatus{0-1}),("urn:iso:15118:2:2016:MsgBody":EVSEProcessing,"urn:iso:15118:2:2016:MsgBody":EVSETargetPower,"urn:iso:15118:2:2016:MsgBody":EVSETargetReactivePower,"urn:iso:15118:2:2016:MsgBody":EVSEID,"urn:iso:15118:2:2016:MsgBody":SAScheduleTupleID{0-1},"urn:iso:15118:2:2016:MsgBody":MeterInfo{0-1},"urn:iso:15118:2:2016:MsgBody":ReceiptRequired{0-1}))',  derivedBy='EXTENSION'.  */
static int decode_iso2AC_BidirectionalControlResType(bitstream_t* stream, struct iso2AC_BidirectionalControlResType* iso2AC_BidirectionalControlResType) {
	int grammarID = 1857;
	int done = 0;
	
	init_iso2AC_BidirectionalControlResType(iso2AC_BidirectionalControlResType);
	
	while(!done) {
		switch(grammarID) {
		case 1857:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 5, &uint32);
							iso2AC_BidirectionalControlResType->ResponseCode = (iso2responseCodeType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1858;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1858:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEProcessing)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2EVSEStatusType(stream, &iso2AC_BidirectionalControlResType->EVSEStatus);
					iso2AC_BidirectionalControlResType->EVSEStatus_isUsed = 1u;
					grammarID = 1859;
					break;
				case 1:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
							iso2AC_BidirectionalControlResType->EVSEProcessing = (iso2EVSEProcessingType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEProcessing) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1860;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1859:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEProcessing)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
							iso2AC_BidirectionalControlResType->EVSEProcessing = (iso2EVSEProcessingType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEProcessing) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1860;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1860:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSETargetPower)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2AC_BidirectionalControlResType->EVSETargetPower);
					grammarID = 1861;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1861:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSETargetReactivePower)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2AC_BidirectionalControlResType->EVSETargetReactivePower);
					grammarID = 27;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 27:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEID)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[STRING]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2AC_BidirectionalControlResType->EVSEID.charactersLen);
							if (errn == 0) {
								if (iso2AC_BidirectionalControlResType->EVSEID.charactersLen >= 2) {
									iso2AC_BidirectionalControlResType->EVSEID.charactersLen = (uint16_t)(iso2AC_BidirectionalControlResType->EVSEID.charactersLen - 2); /* string table miss */
									errn = decodeCharacters(stream, iso2AC_BidirectionalControlResType->EVSEID.charactersLen, iso2AC_BidirectionalControlResType->EVSEID.characters, iso2AC_BidirectionalControlResType_EVSEID_CHARACTERS_SIZE);
								} else {
									/* string table hit */
									errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
								}
							}
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEID) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 28;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 28:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ReceiptRequired), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
							iso2AC_BidirectionalControlResType->SAScheduleTupleID = (uint8_t)(uint32 + 1);
							iso2AC_BidirectionalControlResType->SAScheduleTupleID_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SAScheduleTupleID) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 29;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					errn = decode_iso2MeterInfoType(stream, &iso2AC_BidirectionalControlResType->MeterInfo);
					iso2AC_BidirectionalControlResType->MeterInfo_isUsed = 1u;
					grammarID = 30;
					break;
				case 2:
					/* FirstStartTag[CHARACTERS[BOOLEAN]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeBoolean(stream, &iso2AC_BidirectionalControlResType->ReceiptRequired);
							iso2AC_BidirectionalControlResType->ReceiptRequired_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ReceiptRequired) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 3:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 29:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ReceiptRequired), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2MeterInfoType(stream, &iso2AC_BidirectionalControlResType->MeterInfo);
					iso2AC_BidirectionalControlResType->MeterInfo_isUsed = 1u;
					grammarID = 30;
					break;
				case 1:
					/* FirstStartTag[CHARACTERS[BOOLEAN]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeBoolean(stream, &iso2AC_BidirectionalControlResType->ReceiptRequired);
							iso2AC_BidirectionalControlResType->ReceiptRequired_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ReceiptRequired) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 2:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 30:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ReceiptRequired), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[BOOLEAN]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeBoolean(stream, &iso2AC_BidirectionalControlResType->ReceiptRequired);
							iso2AC_BidirectionalControlResType->ReceiptRequired_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ReceiptRequired) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,VehicleCheckOutReqType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgBody":EVCheckOutStatus,"urn:iso:15118:2:2016:MsgBody":CheckOutTime)',  derivedBy='EXTENSION'.  */
static int decode_iso2VehicleCheckOutReqType(bitstream_t* stream, struct iso2VehicleCheckOutReqType* iso2VehicleCheckOutReqType) {
	int grammarID = 1862;
	int done = 0;
	
	init_iso2VehicleCheckOutReqType(iso2VehicleCheckOutReqType);
	
	while(!done) {
		switch(grammarID) {
		case 1862:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVCheckOutStatus)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
							iso2VehicleCheckOutReqType->EVCheckOutStatus = (iso2EVCheckOutStatusType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVCheckOutStatus) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1863;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1863:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}CheckOutTime)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger64(stream, &iso2VehicleCheckOutReqType->CheckOutTime);
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}CheckOutTime) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,WeldingDetectionReqType',  base type name='BodyBaseType',  content type='EMPTY',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  derivedBy='EXTENSION'.  */
static int decode_iso2WeldingDetectionReqType(bitstream_t* stream, struct iso2WeldingDetectionReqType* iso2WeldingDetectionReqType) {
	int grammarID = 674;
	int done = 0;
	
	init_iso2WeldingDetectionReqType(iso2WeldingDetectionReqType);
	
	while(!done) {
		switch(grammarID) {
		case 674:
			/* FirstStartTag[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,AlignmentCheckResType',  base type name='V2GResponseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(("urn:iso:15118:2:2016:MsgBody":ResponseCode,"urn:iso:15118:2:2016:MsgBody":EVSEStatus{0-1}),("urn:iso:15118:2:2016:MsgBody":EVSEProcessing,"urn:iso:15118:2:2016:MsgBody":AlignmentCheckParameters{0-1}))',  derivedBy='EXTENSION'.  */
static int decode_iso2AlignmentCheckResType(bitstream_t* stream, struct iso2AlignmentCheckResType* iso2AlignmentCheckResType) {
	int grammarID = 1864;
	int done = 0;
	
	init_iso2AlignmentCheckResType(iso2AlignmentCheckResType);
	
	while(!done) {
		switch(grammarID) {
		case 1864:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 5, &uint32);
							iso2AlignmentCheckResType->ResponseCode = (iso2responseCodeType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1865;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1865:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEProcessing)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2EVSEStatusType(stream, &iso2AlignmentCheckResType->EVSEStatus);
					iso2AlignmentCheckResType->EVSEStatus_isUsed = 1u;
					grammarID = 1866;
					break;
				case 1:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
							iso2AlignmentCheckResType->EVSEProcessing = (iso2EVSEProcessingType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEProcessing) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 676;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1866:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEProcessing)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
							iso2AlignmentCheckResType->EVSEProcessing = (iso2EVSEProcessingType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEProcessing) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 676;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 676:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}AlignmentCheckParameters), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2ParameterSetType(stream, &iso2AlignmentCheckResType->AlignmentCheckParameters);
					iso2AlignmentCheckResType->AlignmentCheckParameters_isUsed = 1u;
					grammarID = 3;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,PowerDemandReqType',  base type name='ChargeLoopReqType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(("urn:iso:15118:2:2016:MsgBody":EVTargetEnergyRequest,"urn:iso:15118:2:2016:MsgBody":EVMaximumEnergyRequest{0-1},"urn:iso:15118:2:2016:MsgBody":EVMinimumEnergyRequest{0-1},"urn:iso:15118:2:2016:MsgBody":DisplayParameters{0-1}),("urn:iso:15118:2:2016:MsgBody":EVTargetPower,"urn:iso:15118:2:2016:MsgBody":EVInputPower,"urn:iso:15118:2:2016:MsgBody":PowerDemandParameters{0-1}))',  derivedBy='EXTENSION'.  */
static int decode_iso2PowerDemandReqType(bitstream_t* stream, struct iso2PowerDemandReqType* iso2PowerDemandReqType) {
	int grammarID = 1867;
	int done = 0;
	
	init_iso2PowerDemandReqType(iso2PowerDemandReqType);
	
	while(!done) {
		switch(grammarID) {
		case 1867:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVTargetEnergyRequest)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2PowerDemandReqType->EVTargetEnergyRequest);
					grammarID = 1868;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1868:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMaximumEnergyRequest), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMinimumEnergyRequest), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}DisplayParameters), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVTargetPower)] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2PowerDemandReqType->EVMaximumEnergyRequest);
					iso2PowerDemandReqType->EVMaximumEnergyRequest_isUsed = 1u;
					grammarID = 1869;
					break;
				case 1:
					errn = decode_iso2PhysicalValueType(stream, &iso2PowerDemandReqType->EVMinimumEnergyRequest);
					iso2PowerDemandReqType->EVMinimumEnergyRequest_isUsed = 1u;
					grammarID = 1870;
					break;
				case 2:
					errn = decode_iso2DisplayParametersType(stream, &iso2PowerDemandReqType->DisplayParameters);
					iso2PowerDemandReqType->DisplayParameters_isUsed = 1u;
					grammarID = 1871;
					break;
				case 3:
					errn = decode_iso2PhysicalValueType(stream, &iso2PowerDemandReqType->EVTargetPower);
					grammarID = 1872;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1869:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMinimumEnergyRequest), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}DisplayParameters), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVTargetPower)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2PowerDemandReqType->EVMinimumEnergyRequest);
					iso2PowerDemandReqType->EVMinimumEnergyRequest_isUsed = 1u;
					grammarID = 1870;
					break;
				case 1:
					errn = decode_iso2DisplayParametersType(stream, &iso2PowerDemandReqType->DisplayParameters);
					iso2PowerDemandReqType->DisplayParameters_isUsed = 1u;
					grammarID = 1871;
					break;
				case 2:
					errn = decode_iso2PhysicalValueType(stream, &iso2PowerDemandReqType->EVTargetPower);
					grammarID = 1872;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1870:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}DisplayParameters), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVTargetPower)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2DisplayParametersType(stream, &iso2PowerDemandReqType->DisplayParameters);
					iso2PowerDemandReqType->DisplayParameters_isUsed = 1u;
					grammarID = 1871;
					break;
				case 1:
					errn = decode_iso2PhysicalValueType(stream, &iso2PowerDemandReqType->EVTargetPower);
					grammarID = 1872;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1871:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVTargetPower)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2PowerDemandReqType->EVTargetPower);
					grammarID = 1872;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1872:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVInputPower)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2PowerDemandReqType->EVInputPower);
					grammarID = 1873;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1873:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PowerDemandParameters), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2ParameterSetType(stream, &iso2PowerDemandReqType->PowerDemandParameters);
					iso2PowerDemandReqType->PowerDemandParameters_isUsed = 1u;
					grammarID = 3;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,MinimumPMaxRequestType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgDataTypes":MinimumPMaxScheduleEntry{1-3})',  derivedBy='RESTRICTION'.  */
static int decode_iso2MinimumPMaxRequestType(bitstream_t* stream, struct iso2MinimumPMaxRequestType* iso2MinimumPMaxRequestType) {
	int grammarID = 1874;
	int done = 0;
	
	init_iso2MinimumPMaxRequestType(iso2MinimumPMaxRequestType);
	
	while(!done) {
		switch(grammarID) {
		case 1874:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MinimumPMaxScheduleEntry)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MinimumPMaxRequestType->MinimumPMaxScheduleEntry.arrayLen < iso2MinimumPMaxRequestType_MinimumPMaxScheduleEntry_ARRAY_SIZE) {
						errn = decode_iso2PMaxScheduleEntryType(stream, &iso2MinimumPMaxRequestType->MinimumPMaxScheduleEntry.array[iso2MinimumPMaxRequestType->MinimumPMaxScheduleEntry.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1875;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1875:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MinimumPMaxScheduleEntry), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MinimumPMaxRequestType->MinimumPMaxScheduleEntry.arrayLen < iso2MinimumPMaxRequestType_MinimumPMaxScheduleEntry_ARRAY_SIZE) {
						errn = decode_iso2PMaxScheduleEntryType(stream, &iso2MinimumPMaxRequestType->MinimumPMaxScheduleEntry.array[iso2MinimumPMaxRequestType->MinimumPMaxScheduleEntry.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1876;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1876:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MinimumPMaxScheduleEntry), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MinimumPMaxRequestType->MinimumPMaxScheduleEntry.arrayLen < iso2MinimumPMaxRequestType_MinimumPMaxScheduleEntry_ARRAY_SIZE) {
						errn = decode_iso2PMaxScheduleEntryType(stream, &iso2MinimumPMaxRequestType->MinimumPMaxScheduleEntry.array[iso2MinimumPMaxRequestType->MinimumPMaxScheduleEntry.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 3;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,DisconnectChargingDeviceResType',  base type name='V2GResponseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(("urn:iso:15118:2:2016:MsgBody":ResponseCode,"urn:iso:15118:2:2016:MsgBody":EVSEStatus{0-1}),("urn:iso:15118:2:2016:MsgBody":EVSEProcessing,"urn:iso:15118:2:2016:MsgBody":EVSEElectricalChargingDeviceStatus,"urn:iso:15118:2:2016:MsgBody":EVSEMechanicalChargingDeviceStatus))',  derivedBy='EXTENSION'.  */
static int decode_iso2DisconnectChargingDeviceResType(bitstream_t* stream, struct iso2DisconnectChargingDeviceResType* iso2DisconnectChargingDeviceResType) {
	int grammarID = 591;
	int done = 0;
	
	init_iso2DisconnectChargingDeviceResType(iso2DisconnectChargingDeviceResType);
	
	while(!done) {
		switch(grammarID) {
		case 591:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 5, &uint32);
							iso2DisconnectChargingDeviceResType->ResponseCode = (iso2responseCodeType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 592;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 592:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEProcessing)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2EVSEStatusType(stream, &iso2DisconnectChargingDeviceResType->EVSEStatus);
					iso2DisconnectChargingDeviceResType->EVSEStatus_isUsed = 1u;
					grammarID = 593;
					break;
				case 1:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
							iso2DisconnectChargingDeviceResType->EVSEProcessing = (iso2EVSEProcessingType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEProcessing) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 594;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 593:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEProcessing)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
							iso2DisconnectChargingDeviceResType->EVSEProcessing = (iso2EVSEProcessingType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEProcessing) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 594;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 594:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEElectricalChargingDeviceStatus)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 1, &uint32);
							iso2DisconnectChargingDeviceResType->EVSEElectricalChargingDeviceStatus = (iso2electricalChargingDeviceStatusType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEElectricalChargingDeviceStatus) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 595;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 595:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEMechanicalChargingDeviceStatus)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
							iso2DisconnectChargingDeviceResType->EVSEMechanicalChargingDeviceStatus = (iso2mechanicalChargingDeviceStatusType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEMechanicalChargingDeviceStatus) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,SessionSetupReqType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgBody":EVCCID)',  derivedBy='EXTENSION'.  */
static int decode_iso2SessionSetupReqType(bitstream_t* stream, struct iso2SessionSetupReqType* iso2SessionSetupReqType) {
	int grammarID = 1877;
	int done = 0;
	
	init_iso2SessionSetupReqType(iso2SessionSetupReqType);
	
	while(!done) {
		switch(grammarID) {
		case 1877:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVCCID)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[BINARY_HEX]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2SessionSetupReqType->EVCCID.bytesLen);
							if (errn == 0) {
								errn =  (iso2SessionSetupReqType->EVCCID.bytesLen) <= iso2SessionSetupReqType_EVCCID_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
							}
							if (errn == 0) {
								errn = decodeBytes(stream, iso2SessionSetupReqType->EVCCID.bytesLen, iso2SessionSetupReqType->EVCCID.bytes);
							}
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVCCID) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,PaymentDetailsReqType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgBody":eMAID,"urn:iso:15118:2:2016:MsgBody":ContractSignatureCertChain)',  derivedBy='EXTENSION'.  */
static int decode_iso2PaymentDetailsReqType(bitstream_t* stream, struct iso2PaymentDetailsReqType* iso2PaymentDetailsReqType) {
	int grammarID = 1878;
	int done = 0;
	
	init_iso2PaymentDetailsReqType(iso2PaymentDetailsReqType);
	
	while(!done) {
		switch(grammarID) {
		case 1878:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}eMAID)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* First(xsi:type)StartTag[CHARACTERS[STRING]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2PaymentDetailsReqType->eMAID.charactersLen);
							if (errn == 0) {
								if (iso2PaymentDetailsReqType->eMAID.charactersLen >= 2) {
									iso2PaymentDetailsReqType->eMAID.charactersLen = (uint16_t)(iso2PaymentDetailsReqType->eMAID.charactersLen - 2); /* string table miss */
									errn = decodeCharacters(stream, iso2PaymentDetailsReqType->eMAID.charactersLen, iso2PaymentDetailsReqType->eMAID.characters, iso2PaymentDetailsReqType_eMAID_CHARACTERS_SIZE);
								} else {
									/* string table hit */
									errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
								}
							}
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}eMAID) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1879;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1879:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ContractSignatureCertChain)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2CertificateChainType(stream, &iso2PaymentDetailsReqType->ContractSignatureCertChain);
					grammarID = 3;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,Generic_EVFinePositioningParametersType',  base type name='EVFinePositioningParametersType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgDataTypes":GenericParameters)',  derivedBy='EXTENSION'.  */
static int decode_iso2Generic_EVFinePositioningParametersType(bitstream_t* stream, struct iso2Generic_EVFinePositioningParametersType* iso2Generic_EVFinePositioningParametersType) {
	int grammarID = 1880;
	int done = 0;
	
	init_iso2Generic_EVFinePositioningParametersType(iso2Generic_EVFinePositioningParametersType);
	
	while(!done) {
		switch(grammarID) {
		case 1880:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}GenericParameters)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2ParameterSetType(stream, &iso2Generic_EVFinePositioningParametersType->GenericParameters);
					grammarID = 3;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,ConnectChargingDeviceReqType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgBody":EVElectricalChargingDeviceStatus,"urn:iso:15118:2:2016:MsgBody":EVMechanicalChargingDeviceStatus)',  derivedBy='EXTENSION'.  */
static int decode_iso2ConnectChargingDeviceReqType(bitstream_t* stream, struct iso2ConnectChargingDeviceReqType* iso2ConnectChargingDeviceReqType) {
	int grammarID = 1496;
	int done = 0;
	
	init_iso2ConnectChargingDeviceReqType(iso2ConnectChargingDeviceReqType);
	
	while(!done) {
		switch(grammarID) {
		case 1496:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVElectricalChargingDeviceStatus)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 1, &uint32);
							iso2ConnectChargingDeviceReqType->EVElectricalChargingDeviceStatus = (iso2electricalChargingDeviceStatusType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVElectricalChargingDeviceStatus) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1497;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1497:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMechanicalChargingDeviceStatus)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
							iso2ConnectChargingDeviceReqType->EVMechanicalChargingDeviceStatus = (iso2mechanicalChargingDeviceStatusType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMechanicalChargingDeviceStatus) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,AC_EVSEChargeParameterType',  base type name='EVSEEnergyTransferParameterType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgDataTypes":EVSEMaximumChargeCurrent,"urn:iso:15118:2:2016:MsgDataTypes":EVSENominalVoltage,"urn:iso:15118:2:2016:MsgDataTypes":EVSENominalFrequency)',  derivedBy='EXTENSION'.  */
static int decode_iso2AC_EVSEChargeParameterType(bitstream_t* stream, struct iso2AC_EVSEChargeParameterType* iso2AC_EVSEChargeParameterType) {
	int grammarID = 1881;
	int done = 0;
	
	init_iso2AC_EVSEChargeParameterType(iso2AC_EVSEChargeParameterType);
	
	while(!done) {
		switch(grammarID) {
		case 1881:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEMaximumChargeCurrent)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2AC_EVSEChargeParameterType->EVSEMaximumChargeCurrent);
					grammarID = 1882;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1882:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSENominalVoltage)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2AC_EVSEChargeParameterType->EVSENominalVoltage);
					grammarID = 58;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 58:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSENominalFrequency)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2AC_EVSEChargeParameterType->EVSENominalFrequency);
					grammarID = 3;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,SalesTariffEntryType',  base type name='EntryType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(("urn:iso:15118:2:2016:MsgDataTypes":RelativeTimeInterval),("urn:iso:15118:2:2016:MsgDataTypes":EPriceLevel{0-1},"urn:iso:15118:2:2016:MsgDataTypes":ConsumptionCost{0-3}))',  derivedBy='EXTENSION'.  */
static int decode_iso2SalesTariffEntryType(bitstream_t* stream, struct iso2SalesTariffEntryType* iso2SalesTariffEntryType) {
	int grammarID = 1883;
	int done = 0;
	
	init_iso2SalesTariffEntryType(iso2SalesTariffEntryType);
	
	while(!done) {
		switch(grammarID) {
		case 1883:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RelativeTimeInterval)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2RelativeTimeIntervalType(stream, &iso2SalesTariffEntryType->RelativeTimeInterval);
					grammarID = 1884;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1884:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EPriceLevel), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ConsumptionCost), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
							iso2SalesTariffEntryType->EPriceLevel = (uint8_t)(uint32 + 0);
							iso2SalesTariffEntryType->EPriceLevel_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EPriceLevel) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1885;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					if (iso2SalesTariffEntryType->ConsumptionCost.arrayLen < iso2SalesTariffEntryType_ConsumptionCost_ARRAY_SIZE) {
						errn = decode_iso2ConsumptionCostType(stream, &iso2SalesTariffEntryType->ConsumptionCost.array[iso2SalesTariffEntryType->ConsumptionCost.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1886;
					break;
				case 2:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1885:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ConsumptionCost), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SalesTariffEntryType->ConsumptionCost.arrayLen < iso2SalesTariffEntryType_ConsumptionCost_ARRAY_SIZE) {
						errn = decode_iso2ConsumptionCostType(stream, &iso2SalesTariffEntryType->ConsumptionCost.array[iso2SalesTariffEntryType->ConsumptionCost.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1886;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1886:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ConsumptionCost), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SalesTariffEntryType->ConsumptionCost.arrayLen < iso2SalesTariffEntryType_ConsumptionCost_ARRAY_SIZE) {
						errn = decode_iso2ConsumptionCostType(stream, &iso2SalesTariffEntryType->ConsumptionCost.array[iso2SalesTariffEntryType->ConsumptionCost.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1887;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1887:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ConsumptionCost), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SalesTariffEntryType->ConsumptionCost.arrayLen < iso2SalesTariffEntryType_ConsumptionCost_ARRAY_SIZE) {
						errn = decode_iso2ConsumptionCostType(stream, &iso2SalesTariffEntryType->ConsumptionCost.array[iso2SalesTariffEntryType->ConsumptionCost.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 3;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,DC_EVSEBidirectionalParameterType',  base type name='DC_EVSEChargeParameterType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(("urn:iso:15118:2:2016:MsgDataTypes":EVSEMaximumChargePower,"urn:iso:15118:2:2016:MsgDataTypes":EVSEMaximumChargeCurrent,"urn:iso:15118:2:2016:MsgDataTypes":EVSEMinimumChargeCurrent,"urn:iso:15118:2:2016:MsgDataTypes":EVSEMaximumVoltage,"urn:iso:15118:2:2016:MsgDataTypes":EVSEMinimumVoltage,"urn:iso:15118:2:2016:MsgDataTypes":EVSECurrentRegulationTolerance{0-1},"urn:iso:15118:2:2016:MsgDataTypes":EVSEPeakCurrentRipple,"urn:iso:15118:2:2016:MsgDataTypes":EVSEEnergyToBeDelivered{0-1}),("urn:iso:15118:2:2016:MsgDataTypes":EVSEMaximumDischargePower,"urn:iso:15118:2:2016:MsgDataTypes":EVSEMaximumDischargeCurrent,"urn:iso:15118:2:2016:MsgDataTypes":EVSEMinimumDischargeCurrent))',  derivedBy='EXTENSION'.  */
static int decode_iso2DC_EVSEBidirectionalParameterType(bitstream_t* stream, struct iso2DC_EVSEBidirectionalParameterType* iso2DC_EVSEBidirectionalParameterType) {
	int grammarID = 1888;
	int done = 0;
	
	init_iso2DC_EVSEBidirectionalParameterType(iso2DC_EVSEBidirectionalParameterType);
	
	while(!done) {
		switch(grammarID) {
		case 1888:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEMaximumChargePower)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVSEBidirectionalParameterType->EVSEMaximumChargePower);
					grammarID = 1889;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1889:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEMaximumChargeCurrent)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVSEBidirectionalParameterType->EVSEMaximumChargeCurrent);
					grammarID = 1890;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1890:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEMinimumChargeCurrent)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVSEBidirectionalParameterType->EVSEMinimumChargeCurrent);
					grammarID = 1891;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1891:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEMaximumVoltage)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVSEBidirectionalParameterType->EVSEMaximumVoltage);
					grammarID = 1892;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1892:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEMinimumVoltage)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVSEBidirectionalParameterType->EVSEMinimumVoltage);
					grammarID = 1893;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1893:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSECurrentRegulationTolerance), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEPeakCurrentRipple)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVSEBidirectionalParameterType->EVSECurrentRegulationTolerance);
					iso2DC_EVSEBidirectionalParameterType->EVSECurrentRegulationTolerance_isUsed = 1u;
					grammarID = 1894;
					break;
				case 1:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVSEBidirectionalParameterType->EVSEPeakCurrentRipple);
					grammarID = 1895;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1894:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEPeakCurrentRipple)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVSEBidirectionalParameterType->EVSEPeakCurrentRipple);
					grammarID = 1895;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1895:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEEnergyToBeDelivered), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEMaximumDischargePower)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVSEBidirectionalParameterType->EVSEEnergyToBeDelivered);
					iso2DC_EVSEBidirectionalParameterType->EVSEEnergyToBeDelivered_isUsed = 1u;
					grammarID = 1896;
					break;
				case 1:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVSEBidirectionalParameterType->EVSEMaximumDischargePower);
					grammarID = 1897;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1896:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEMaximumDischargePower)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVSEBidirectionalParameterType->EVSEMaximumDischargePower);
					grammarID = 1897;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1897:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEMaximumDischargeCurrent)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVSEBidirectionalParameterType->EVSEMaximumDischargeCurrent);
					grammarID = 1898;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1898:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEMinimumDischargeCurrent)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVSEBidirectionalParameterType->EVSEMinimumDischargeCurrent);
					grammarID = 3;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='http://www.w3.org/2000/09/xmldsig#,CanonicalizationMethodType',  base type name='anyType',  content type='MIXED',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='((WC[##any]){0-UNBOUNDED})',  derivedBy='RESTRICTION'.  */
static int decode_iso2CanonicalizationMethodType(bitstream_t* stream, struct iso2CanonicalizationMethodType* iso2CanonicalizationMethodType) {
	int grammarID = 1899;
	int done = 0;
	
	init_iso2CanonicalizationMethodType(iso2CanonicalizationMethodType);
	
	while(!done) {
		switch(grammarID) {
		case 1899:
			/* FirstStartTag[ATTRIBUTE[STRING](Algorithm)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decodeUnsignedInteger16(stream, &iso2CanonicalizationMethodType->Algorithm.charactersLen);
					if (errn == 0) {
						if (iso2CanonicalizationMethodType->Algorithm.charactersLen >= 2) {
							iso2CanonicalizationMethodType->Algorithm.charactersLen = (uint16_t)(iso2CanonicalizationMethodType->Algorithm.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2CanonicalizationMethodType->Algorithm.charactersLen, iso2CanonicalizationMethodType->Algorithm.characters, iso2CanonicalizationMethodType_Algorithm_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					grammarID = 684;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 684:
			/* StartTag[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					/* TODO unsupported event : START_ELEMENT_GENERIC */
					grammarID = 685;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				case 2:
					errn = decodeUnsignedInteger16(stream, &iso2CanonicalizationMethodType->ANY.charactersLen);
					if (errn == 0) {
						if (iso2CanonicalizationMethodType->ANY.charactersLen >= 2) {
							iso2CanonicalizationMethodType->ANY.charactersLen = (uint16_t)(iso2CanonicalizationMethodType->ANY.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2CanonicalizationMethodType->ANY.charactersLen, iso2CanonicalizationMethodType->ANY.characters, iso2CanonicalizationMethodType_ANY_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					iso2CanonicalizationMethodType->ANY_isUsed = 1u;
					grammarID = 685;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 685:
			/* Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					/* TODO unsupported event : START_ELEMENT_GENERIC */
					grammarID = 685;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				case 2:
					errn = decodeUnsignedInteger16(stream, &iso2CanonicalizationMethodType->ANY.charactersLen);
					if (errn == 0) {
						if (iso2CanonicalizationMethodType->ANY.charactersLen >= 2) {
							iso2CanonicalizationMethodType->ANY.charactersLen = (uint16_t)(iso2CanonicalizationMethodType->ANY.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2CanonicalizationMethodType->ANY.charactersLen, iso2CanonicalizationMethodType->ANY.characters, iso2CanonicalizationMethodType_ANY_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					iso2CanonicalizationMethodType->ANY_isUsed = 1u;
					grammarID = 685;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,DisplayParametersType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgDataTypes":CurrentRange{0-1},"urn:iso:15118:2:2016:MsgDataTypes":CurrentSOC{0-1},"urn:iso:15118:2:2016:MsgDataTypes":TargetSOC{0-1},"urn:iso:15118:2:2016:MsgDataTypes":BulkSOC{0-1},"urn:iso:15118:2:2016:MsgDataTypes":MinimumSOC{0-1},"urn:iso:15118:2:2016:MsgDataTypes":ChargingPerformance{0-1},"urn:iso:15118:2:2016:MsgDataTypes":RemainingTimeToTargetSOC{0-1},"urn:iso:15118:2:2016:MsgDataTypes":RemainingTimeToBulkSOC{0-1},"urn:iso:15118:2:2016:MsgDataTypes":RemainingTimeToMinimumSOC{0-1},"urn:iso:15118:2:2016:MsgDataTypes":ChargingComplete{0-1},"urn:iso:15118:2:2016:MsgDataTypes":BulkChargingComplete{0-1},"urn:iso:15118:2:2016:MsgDataTypes":InletHot{0-1})',  derivedBy='RESTRICTION'.  */
static int decode_iso2DisplayParametersType(bitstream_t* stream, struct iso2DisplayParametersType* iso2DisplayParametersType) {
	int grammarID = 1900;
	int done = 0;
	
	init_iso2DisplayParametersType(iso2DisplayParametersType);
	
	while(!done) {
		switch(grammarID) {
		case 1900:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}CurrentRange), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}CurrentSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}TargetSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BulkSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MinimumSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ChargingPerformance), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RemainingTimeToTargetSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RemainingTimeToBulkSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RemainingTimeToMinimumSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}InletHot), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 4, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2DisplayParametersType->CurrentRange);
							iso2DisplayParametersType->CurrentRange_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}CurrentRange) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1901;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DisplayParametersType->CurrentSOC = (int8_t)(uint32 + 0);
							iso2DisplayParametersType->CurrentSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}CurrentSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1902;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 2:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DisplayParametersType->TargetSOC = (int8_t)(uint32 + 0);
							iso2DisplayParametersType->TargetSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}TargetSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1903;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 3:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DisplayParametersType->BulkSOC = (int8_t)(uint32 + 0);
							iso2DisplayParametersType->BulkSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BulkSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1904;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 4:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DisplayParametersType->MinimumSOC = (int8_t)(uint32 + 0);
							iso2DisplayParametersType->MinimumSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MinimumSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1905;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 5:
					errn = decode_iso2PhysicalValueType(stream, &iso2DisplayParametersType->ChargingPerformance);
					iso2DisplayParametersType->ChargingPerformance_isUsed = 1u;
					grammarID = 1906;
					break;
				case 6:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DisplayParametersType->RemainingTimeToTargetSOC = (int8_t)(uint32 + 0);
							iso2DisplayParametersType->RemainingTimeToTargetSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RemainingTimeToTargetSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1907;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 7:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DisplayParametersType->RemainingTimeToBulkSOC = (int8_t)(uint32 + 0);
							iso2DisplayParametersType->RemainingTimeToBulkSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RemainingTimeToBulkSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1908;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 8:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DisplayParametersType->RemainingTimeToMinimumSOC = (int8_t)(uint32 + 0);
							iso2DisplayParametersType->RemainingTimeToMinimumSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RemainingTimeToMinimumSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1909;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 9:
					/* FirstStartTag[CHARACTERS[BOOLEAN]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeBoolean(stream, &iso2DisplayParametersType->ChargingComplete);
							iso2DisplayParametersType->ChargingComplete_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ChargingComplete) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1910;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 10:
					/* FirstStartTag[CHARACTERS[BOOLEAN]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeBoolean(stream, &iso2DisplayParametersType->BulkChargingComplete);
							iso2DisplayParametersType->BulkChargingComplete_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BulkChargingComplete) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1911;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 11:
					/* FirstStartTag[CHARACTERS[BOOLEAN]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeBoolean(stream, &iso2DisplayParametersType->InletHot);
							iso2DisplayParametersType->InletHot_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}InletHot) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 12:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1901:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}CurrentSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}TargetSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BulkSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MinimumSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ChargingPerformance), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RemainingTimeToTargetSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RemainingTimeToBulkSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RemainingTimeToMinimumSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}InletHot), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 4, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DisplayParametersType->CurrentSOC = (int8_t)(uint32 + 0);
							iso2DisplayParametersType->CurrentSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}CurrentSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1902;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DisplayParametersType->TargetSOC = (int8_t)(uint32 + 0);
							iso2DisplayParametersType->TargetSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}TargetSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1903;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 2:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DisplayParametersType->BulkSOC = (int8_t)(uint32 + 0);
							iso2DisplayParametersType->BulkSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BulkSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1904;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 3:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DisplayParametersType->MinimumSOC = (int8_t)(uint32 + 0);
							iso2DisplayParametersType->MinimumSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MinimumSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1905;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 4:
					errn = decode_iso2PhysicalValueType(stream, &iso2DisplayParametersType->ChargingPerformance);
					iso2DisplayParametersType->ChargingPerformance_isUsed = 1u;
					grammarID = 1906;
					break;
				case 5:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DisplayParametersType->RemainingTimeToTargetSOC = (int8_t)(uint32 + 0);
							iso2DisplayParametersType->RemainingTimeToTargetSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RemainingTimeToTargetSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1907;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 6:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DisplayParametersType->RemainingTimeToBulkSOC = (int8_t)(uint32 + 0);
							iso2DisplayParametersType->RemainingTimeToBulkSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RemainingTimeToBulkSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1908;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 7:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DisplayParametersType->RemainingTimeToMinimumSOC = (int8_t)(uint32 + 0);
							iso2DisplayParametersType->RemainingTimeToMinimumSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RemainingTimeToMinimumSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1909;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 8:
					/* FirstStartTag[CHARACTERS[BOOLEAN]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeBoolean(stream, &iso2DisplayParametersType->ChargingComplete);
							iso2DisplayParametersType->ChargingComplete_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ChargingComplete) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1910;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 9:
					/* FirstStartTag[CHARACTERS[BOOLEAN]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeBoolean(stream, &iso2DisplayParametersType->BulkChargingComplete);
							iso2DisplayParametersType->BulkChargingComplete_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BulkChargingComplete) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1911;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 10:
					/* FirstStartTag[CHARACTERS[BOOLEAN]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeBoolean(stream, &iso2DisplayParametersType->InletHot);
							iso2DisplayParametersType->InletHot_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}InletHot) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 11:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1902:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}TargetSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BulkSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MinimumSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ChargingPerformance), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RemainingTimeToTargetSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RemainingTimeToBulkSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RemainingTimeToMinimumSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}InletHot), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 4, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DisplayParametersType->TargetSOC = (int8_t)(uint32 + 0);
							iso2DisplayParametersType->TargetSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}TargetSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1903;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DisplayParametersType->BulkSOC = (int8_t)(uint32 + 0);
							iso2DisplayParametersType->BulkSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BulkSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1904;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 2:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DisplayParametersType->MinimumSOC = (int8_t)(uint32 + 0);
							iso2DisplayParametersType->MinimumSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MinimumSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1905;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 3:
					errn = decode_iso2PhysicalValueType(stream, &iso2DisplayParametersType->ChargingPerformance);
					iso2DisplayParametersType->ChargingPerformance_isUsed = 1u;
					grammarID = 1906;
					break;
				case 4:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DisplayParametersType->RemainingTimeToTargetSOC = (int8_t)(uint32 + 0);
							iso2DisplayParametersType->RemainingTimeToTargetSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RemainingTimeToTargetSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1907;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 5:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DisplayParametersType->RemainingTimeToBulkSOC = (int8_t)(uint32 + 0);
							iso2DisplayParametersType->RemainingTimeToBulkSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RemainingTimeToBulkSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1908;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 6:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DisplayParametersType->RemainingTimeToMinimumSOC = (int8_t)(uint32 + 0);
							iso2DisplayParametersType->RemainingTimeToMinimumSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RemainingTimeToMinimumSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1909;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 7:
					/* FirstStartTag[CHARACTERS[BOOLEAN]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeBoolean(stream, &iso2DisplayParametersType->ChargingComplete);
							iso2DisplayParametersType->ChargingComplete_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ChargingComplete) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1910;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 8:
					/* FirstStartTag[CHARACTERS[BOOLEAN]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeBoolean(stream, &iso2DisplayParametersType->BulkChargingComplete);
							iso2DisplayParametersType->BulkChargingComplete_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BulkChargingComplete) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1911;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 9:
					/* FirstStartTag[CHARACTERS[BOOLEAN]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeBoolean(stream, &iso2DisplayParametersType->InletHot);
							iso2DisplayParametersType->InletHot_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}InletHot) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 10:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1903:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BulkSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MinimumSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ChargingPerformance), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RemainingTimeToTargetSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RemainingTimeToBulkSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RemainingTimeToMinimumSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}InletHot), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 4, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DisplayParametersType->BulkSOC = (int8_t)(uint32 + 0);
							iso2DisplayParametersType->BulkSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BulkSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1904;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DisplayParametersType->MinimumSOC = (int8_t)(uint32 + 0);
							iso2DisplayParametersType->MinimumSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MinimumSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1905;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 2:
					errn = decode_iso2PhysicalValueType(stream, &iso2DisplayParametersType->ChargingPerformance);
					iso2DisplayParametersType->ChargingPerformance_isUsed = 1u;
					grammarID = 1906;
					break;
				case 3:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DisplayParametersType->RemainingTimeToTargetSOC = (int8_t)(uint32 + 0);
							iso2DisplayParametersType->RemainingTimeToTargetSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RemainingTimeToTargetSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1907;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 4:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DisplayParametersType->RemainingTimeToBulkSOC = (int8_t)(uint32 + 0);
							iso2DisplayParametersType->RemainingTimeToBulkSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RemainingTimeToBulkSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1908;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 5:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DisplayParametersType->RemainingTimeToMinimumSOC = (int8_t)(uint32 + 0);
							iso2DisplayParametersType->RemainingTimeToMinimumSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RemainingTimeToMinimumSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1909;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 6:
					/* FirstStartTag[CHARACTERS[BOOLEAN]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeBoolean(stream, &iso2DisplayParametersType->ChargingComplete);
							iso2DisplayParametersType->ChargingComplete_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ChargingComplete) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1910;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 7:
					/* FirstStartTag[CHARACTERS[BOOLEAN]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeBoolean(stream, &iso2DisplayParametersType->BulkChargingComplete);
							iso2DisplayParametersType->BulkChargingComplete_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BulkChargingComplete) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1911;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 8:
					/* FirstStartTag[CHARACTERS[BOOLEAN]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeBoolean(stream, &iso2DisplayParametersType->InletHot);
							iso2DisplayParametersType->InletHot_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}InletHot) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 9:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1904:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MinimumSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ChargingPerformance), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RemainingTimeToTargetSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RemainingTimeToBulkSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RemainingTimeToMinimumSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}InletHot), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 4, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DisplayParametersType->MinimumSOC = (int8_t)(uint32 + 0);
							iso2DisplayParametersType->MinimumSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MinimumSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1905;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					errn = decode_iso2PhysicalValueType(stream, &iso2DisplayParametersType->ChargingPerformance);
					iso2DisplayParametersType->ChargingPerformance_isUsed = 1u;
					grammarID = 1906;
					break;
				case 2:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DisplayParametersType->RemainingTimeToTargetSOC = (int8_t)(uint32 + 0);
							iso2DisplayParametersType->RemainingTimeToTargetSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RemainingTimeToTargetSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1907;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 3:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DisplayParametersType->RemainingTimeToBulkSOC = (int8_t)(uint32 + 0);
							iso2DisplayParametersType->RemainingTimeToBulkSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RemainingTimeToBulkSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1908;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 4:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DisplayParametersType->RemainingTimeToMinimumSOC = (int8_t)(uint32 + 0);
							iso2DisplayParametersType->RemainingTimeToMinimumSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RemainingTimeToMinimumSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1909;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 5:
					/* FirstStartTag[CHARACTERS[BOOLEAN]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeBoolean(stream, &iso2DisplayParametersType->ChargingComplete);
							iso2DisplayParametersType->ChargingComplete_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ChargingComplete) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1910;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 6:
					/* FirstStartTag[CHARACTERS[BOOLEAN]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeBoolean(stream, &iso2DisplayParametersType->BulkChargingComplete);
							iso2DisplayParametersType->BulkChargingComplete_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BulkChargingComplete) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1911;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 7:
					/* FirstStartTag[CHARACTERS[BOOLEAN]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeBoolean(stream, &iso2DisplayParametersType->InletHot);
							iso2DisplayParametersType->InletHot_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}InletHot) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 8:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1905:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ChargingPerformance), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RemainingTimeToTargetSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RemainingTimeToBulkSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RemainingTimeToMinimumSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}InletHot), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 4, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2DisplayParametersType->ChargingPerformance);
					iso2DisplayParametersType->ChargingPerformance_isUsed = 1u;
					grammarID = 1906;
					break;
				case 1:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DisplayParametersType->RemainingTimeToTargetSOC = (int8_t)(uint32 + 0);
							iso2DisplayParametersType->RemainingTimeToTargetSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RemainingTimeToTargetSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1907;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 2:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DisplayParametersType->RemainingTimeToBulkSOC = (int8_t)(uint32 + 0);
							iso2DisplayParametersType->RemainingTimeToBulkSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RemainingTimeToBulkSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1908;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 3:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DisplayParametersType->RemainingTimeToMinimumSOC = (int8_t)(uint32 + 0);
							iso2DisplayParametersType->RemainingTimeToMinimumSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RemainingTimeToMinimumSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1909;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 4:
					/* FirstStartTag[CHARACTERS[BOOLEAN]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeBoolean(stream, &iso2DisplayParametersType->ChargingComplete);
							iso2DisplayParametersType->ChargingComplete_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ChargingComplete) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1910;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 5:
					/* FirstStartTag[CHARACTERS[BOOLEAN]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeBoolean(stream, &iso2DisplayParametersType->BulkChargingComplete);
							iso2DisplayParametersType->BulkChargingComplete_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BulkChargingComplete) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1911;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 6:
					/* FirstStartTag[CHARACTERS[BOOLEAN]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeBoolean(stream, &iso2DisplayParametersType->InletHot);
							iso2DisplayParametersType->InletHot_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}InletHot) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 7:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1906:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RemainingTimeToTargetSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RemainingTimeToBulkSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RemainingTimeToMinimumSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}InletHot), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DisplayParametersType->RemainingTimeToTargetSOC = (int8_t)(uint32 + 0);
							iso2DisplayParametersType->RemainingTimeToTargetSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RemainingTimeToTargetSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1907;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DisplayParametersType->RemainingTimeToBulkSOC = (int8_t)(uint32 + 0);
							iso2DisplayParametersType->RemainingTimeToBulkSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RemainingTimeToBulkSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1908;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 2:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DisplayParametersType->RemainingTimeToMinimumSOC = (int8_t)(uint32 + 0);
							iso2DisplayParametersType->RemainingTimeToMinimumSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RemainingTimeToMinimumSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1909;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 3:
					/* FirstStartTag[CHARACTERS[BOOLEAN]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeBoolean(stream, &iso2DisplayParametersType->ChargingComplete);
							iso2DisplayParametersType->ChargingComplete_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ChargingComplete) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1910;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 4:
					/* FirstStartTag[CHARACTERS[BOOLEAN]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeBoolean(stream, &iso2DisplayParametersType->BulkChargingComplete);
							iso2DisplayParametersType->BulkChargingComplete_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BulkChargingComplete) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1911;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 5:
					/* FirstStartTag[CHARACTERS[BOOLEAN]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeBoolean(stream, &iso2DisplayParametersType->InletHot);
							iso2DisplayParametersType->InletHot_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}InletHot) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 6:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1907:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RemainingTimeToBulkSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RemainingTimeToMinimumSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}InletHot), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DisplayParametersType->RemainingTimeToBulkSOC = (int8_t)(uint32 + 0);
							iso2DisplayParametersType->RemainingTimeToBulkSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RemainingTimeToBulkSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1908;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DisplayParametersType->RemainingTimeToMinimumSOC = (int8_t)(uint32 + 0);
							iso2DisplayParametersType->RemainingTimeToMinimumSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RemainingTimeToMinimumSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1909;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 2:
					/* FirstStartTag[CHARACTERS[BOOLEAN]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeBoolean(stream, &iso2DisplayParametersType->ChargingComplete);
							iso2DisplayParametersType->ChargingComplete_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ChargingComplete) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1910;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 3:
					/* FirstStartTag[CHARACTERS[BOOLEAN]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeBoolean(stream, &iso2DisplayParametersType->BulkChargingComplete);
							iso2DisplayParametersType->BulkChargingComplete_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BulkChargingComplete) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1911;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 4:
					/* FirstStartTag[CHARACTERS[BOOLEAN]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeBoolean(stream, &iso2DisplayParametersType->InletHot);
							iso2DisplayParametersType->InletHot_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}InletHot) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 5:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1908:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RemainingTimeToMinimumSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}InletHot), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DisplayParametersType->RemainingTimeToMinimumSOC = (int8_t)(uint32 + 0);
							iso2DisplayParametersType->RemainingTimeToMinimumSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RemainingTimeToMinimumSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1909;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					/* FirstStartTag[CHARACTERS[BOOLEAN]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeBoolean(stream, &iso2DisplayParametersType->ChargingComplete);
							iso2DisplayParametersType->ChargingComplete_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ChargingComplete) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1910;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 2:
					/* FirstStartTag[CHARACTERS[BOOLEAN]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeBoolean(stream, &iso2DisplayParametersType->BulkChargingComplete);
							iso2DisplayParametersType->BulkChargingComplete_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BulkChargingComplete) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1911;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 3:
					/* FirstStartTag[CHARACTERS[BOOLEAN]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeBoolean(stream, &iso2DisplayParametersType->InletHot);
							iso2DisplayParametersType->InletHot_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}InletHot) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 4:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1909:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}InletHot), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[BOOLEAN]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeBoolean(stream, &iso2DisplayParametersType->ChargingComplete);
							iso2DisplayParametersType->ChargingComplete_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ChargingComplete) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1910;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					/* FirstStartTag[CHARACTERS[BOOLEAN]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeBoolean(stream, &iso2DisplayParametersType->BulkChargingComplete);
							iso2DisplayParametersType->BulkChargingComplete_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BulkChargingComplete) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1911;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 2:
					/* FirstStartTag[CHARACTERS[BOOLEAN]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeBoolean(stream, &iso2DisplayParametersType->InletHot);
							iso2DisplayParametersType->InletHot_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}InletHot) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 3:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1910:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}InletHot), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[BOOLEAN]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeBoolean(stream, &iso2DisplayParametersType->BulkChargingComplete);
							iso2DisplayParametersType->BulkChargingComplete_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BulkChargingComplete) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1911;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					/* FirstStartTag[CHARACTERS[BOOLEAN]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeBoolean(stream, &iso2DisplayParametersType->InletHot);
							iso2DisplayParametersType->InletHot_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}InletHot) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 2:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1911:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}InletHot), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[BOOLEAN]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeBoolean(stream, &iso2DisplayParametersType->InletHot);
							iso2DisplayParametersType->InletHot_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}InletHot) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,DC_EVBidirectionalParameterType',  base type name='DC_EVChargeParameterType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='((("urn:iso:15118:2:2016:MsgDataTypes":DepartureTime),("urn:iso:15118:2:2016:MsgDataTypes":EVMaximumChargePower{0-1},"urn:iso:15118:2:2016:MsgDataTypes":EVMinimumChargePower{0-1},"urn:iso:15118:2:2016:MsgDataTypes":EVMaximumChargeCurrent,"urn:iso:15118:2:2016:MsgDataTypes":EVMinimumChargeCurrent,"urn:iso:15118:2:2016:MsgDataTypes":EVMaximumVoltage,"urn:iso:15118:2:2016:MsgDataTypes":EVTargetEnergyRequest{0-1},"urn:iso:15118:2:2016:MsgDataTypes":EVMaximumEnergyRequest{0-1},"urn:iso:15118:2:2016:MsgDataTypes":EVMinimumEnergyRequest{0-1},"urn:iso:15118:2:2016:MsgDataTypes":CurrentSOC{0-1},"urn:iso:15118:2:2016:MsgDataTypes":TargetSOC{0-1},"urn:iso:15118:2:2016:MsgDataTypes":BulkSOC{0-1})),("urn:iso:15118:2:2016:MsgDataTypes":EVMaximumDischargePower{0-1},"urn:iso:15118:2:2016:MsgDataTypes":EVMinimumDischargePower{0-1},"urn:iso:15118:2:2016:MsgDataTypes":EVMaximumDischargeCurrent,"urn:iso:15118:2:2016:MsgDataTypes":EVMinimumDischargeCurrent,"urn:iso:15118:2:2016:MsgDataTypes":EVMinimumVoltage,"urn:iso:15118:2:2016:MsgDataTypes":MinimumSOC{0-1}))',  derivedBy='EXTENSION'.  */
static int decode_iso2DC_EVBidirectionalParameterType(bitstream_t* stream, struct iso2DC_EVBidirectionalParameterType* iso2DC_EVBidirectionalParameterType) {
	int grammarID = 1912;
	int done = 0;
	
	init_iso2DC_EVBidirectionalParameterType(iso2DC_EVBidirectionalParameterType);
	
	while(!done) {
		switch(grammarID) {
		case 1912:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}DepartureTime)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger32(stream, &iso2DC_EVBidirectionalParameterType->DepartureTime);
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}DepartureTime) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1913;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1913:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumChargePower), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMinimumChargePower), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumChargeCurrent)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVBidirectionalParameterType->EVMaximumChargePower);
					iso2DC_EVBidirectionalParameterType->EVMaximumChargePower_isUsed = 1u;
					grammarID = 1914;
					break;
				case 1:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVBidirectionalParameterType->EVMinimumChargePower);
					iso2DC_EVBidirectionalParameterType->EVMinimumChargePower_isUsed = 1u;
					grammarID = 1915;
					break;
				case 2:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVBidirectionalParameterType->EVMaximumChargeCurrent);
					grammarID = 1916;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1914:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMinimumChargePower), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumChargeCurrent)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVBidirectionalParameterType->EVMinimumChargePower);
					iso2DC_EVBidirectionalParameterType->EVMinimumChargePower_isUsed = 1u;
					grammarID = 1915;
					break;
				case 1:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVBidirectionalParameterType->EVMaximumChargeCurrent);
					grammarID = 1916;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1915:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumChargeCurrent)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVBidirectionalParameterType->EVMaximumChargeCurrent);
					grammarID = 1916;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1916:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMinimumChargeCurrent)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVBidirectionalParameterType->EVMinimumChargeCurrent);
					grammarID = 1917;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1917:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumVoltage)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVBidirectionalParameterType->EVMaximumVoltage);
					grammarID = 1918;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1918:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVTargetEnergyRequest), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumEnergyRequest), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMinimumEnergyRequest), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}CurrentSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}TargetSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BulkSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumDischargePower), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMinimumDischargePower), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumDischargeCurrent)] */
			errn = decodeNBitUnsignedInteger(stream, 4, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVBidirectionalParameterType->EVTargetEnergyRequest);
					iso2DC_EVBidirectionalParameterType->EVTargetEnergyRequest_isUsed = 1u;
					grammarID = 1919;
					break;
				case 1:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVBidirectionalParameterType->EVMaximumEnergyRequest);
					iso2DC_EVBidirectionalParameterType->EVMaximumEnergyRequest_isUsed = 1u;
					grammarID = 1920;
					break;
				case 2:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVBidirectionalParameterType->EVMinimumEnergyRequest);
					iso2DC_EVBidirectionalParameterType->EVMinimumEnergyRequest_isUsed = 1u;
					grammarID = 1921;
					break;
				case 3:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DC_EVBidirectionalParameterType->CurrentSOC = (int8_t)(uint32 + 0);
							iso2DC_EVBidirectionalParameterType->CurrentSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}CurrentSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1922;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 4:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DC_EVBidirectionalParameterType->TargetSOC = (int8_t)(uint32 + 0);
							iso2DC_EVBidirectionalParameterType->TargetSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}TargetSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1923;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 5:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DC_EVBidirectionalParameterType->BulkSOC = (int8_t)(uint32 + 0);
							iso2DC_EVBidirectionalParameterType->BulkSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BulkSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1924;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 6:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVBidirectionalParameterType->EVMaximumDischargePower);
					iso2DC_EVBidirectionalParameterType->EVMaximumDischargePower_isUsed = 1u;
					grammarID = 1925;
					break;
				case 7:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVBidirectionalParameterType->EVMinimumDischargePower);
					iso2DC_EVBidirectionalParameterType->EVMinimumDischargePower_isUsed = 1u;
					grammarID = 1926;
					break;
				case 8:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVBidirectionalParameterType->EVMaximumDischargeCurrent);
					grammarID = 1927;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1919:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumEnergyRequest), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMinimumEnergyRequest), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}CurrentSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}TargetSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BulkSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumDischargePower), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMinimumDischargePower), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumDischargeCurrent)] */
			errn = decodeNBitUnsignedInteger(stream, 4, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVBidirectionalParameterType->EVMaximumEnergyRequest);
					iso2DC_EVBidirectionalParameterType->EVMaximumEnergyRequest_isUsed = 1u;
					grammarID = 1920;
					break;
				case 1:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVBidirectionalParameterType->EVMinimumEnergyRequest);
					iso2DC_EVBidirectionalParameterType->EVMinimumEnergyRequest_isUsed = 1u;
					grammarID = 1921;
					break;
				case 2:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DC_EVBidirectionalParameterType->CurrentSOC = (int8_t)(uint32 + 0);
							iso2DC_EVBidirectionalParameterType->CurrentSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}CurrentSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1922;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 3:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DC_EVBidirectionalParameterType->TargetSOC = (int8_t)(uint32 + 0);
							iso2DC_EVBidirectionalParameterType->TargetSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}TargetSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1923;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 4:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DC_EVBidirectionalParameterType->BulkSOC = (int8_t)(uint32 + 0);
							iso2DC_EVBidirectionalParameterType->BulkSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BulkSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1924;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 5:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVBidirectionalParameterType->EVMaximumDischargePower);
					iso2DC_EVBidirectionalParameterType->EVMaximumDischargePower_isUsed = 1u;
					grammarID = 1925;
					break;
				case 6:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVBidirectionalParameterType->EVMinimumDischargePower);
					iso2DC_EVBidirectionalParameterType->EVMinimumDischargePower_isUsed = 1u;
					grammarID = 1926;
					break;
				case 7:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVBidirectionalParameterType->EVMaximumDischargeCurrent);
					grammarID = 1927;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1920:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMinimumEnergyRequest), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}CurrentSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}TargetSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BulkSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumDischargePower), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMinimumDischargePower), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumDischargeCurrent)] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVBidirectionalParameterType->EVMinimumEnergyRequest);
					iso2DC_EVBidirectionalParameterType->EVMinimumEnergyRequest_isUsed = 1u;
					grammarID = 1921;
					break;
				case 1:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DC_EVBidirectionalParameterType->CurrentSOC = (int8_t)(uint32 + 0);
							iso2DC_EVBidirectionalParameterType->CurrentSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}CurrentSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1922;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 2:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DC_EVBidirectionalParameterType->TargetSOC = (int8_t)(uint32 + 0);
							iso2DC_EVBidirectionalParameterType->TargetSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}TargetSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1923;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 3:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DC_EVBidirectionalParameterType->BulkSOC = (int8_t)(uint32 + 0);
							iso2DC_EVBidirectionalParameterType->BulkSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BulkSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1924;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 4:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVBidirectionalParameterType->EVMaximumDischargePower);
					iso2DC_EVBidirectionalParameterType->EVMaximumDischargePower_isUsed = 1u;
					grammarID = 1925;
					break;
				case 5:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVBidirectionalParameterType->EVMinimumDischargePower);
					iso2DC_EVBidirectionalParameterType->EVMinimumDischargePower_isUsed = 1u;
					grammarID = 1926;
					break;
				case 6:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVBidirectionalParameterType->EVMaximumDischargeCurrent);
					grammarID = 1927;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1921:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}CurrentSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}TargetSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BulkSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumDischargePower), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMinimumDischargePower), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumDischargeCurrent)] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DC_EVBidirectionalParameterType->CurrentSOC = (int8_t)(uint32 + 0);
							iso2DC_EVBidirectionalParameterType->CurrentSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}CurrentSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1922;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DC_EVBidirectionalParameterType->TargetSOC = (int8_t)(uint32 + 0);
							iso2DC_EVBidirectionalParameterType->TargetSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}TargetSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1923;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 2:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DC_EVBidirectionalParameterType->BulkSOC = (int8_t)(uint32 + 0);
							iso2DC_EVBidirectionalParameterType->BulkSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BulkSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1924;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 3:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVBidirectionalParameterType->EVMaximumDischargePower);
					iso2DC_EVBidirectionalParameterType->EVMaximumDischargePower_isUsed = 1u;
					grammarID = 1925;
					break;
				case 4:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVBidirectionalParameterType->EVMinimumDischargePower);
					iso2DC_EVBidirectionalParameterType->EVMinimumDischargePower_isUsed = 1u;
					grammarID = 1926;
					break;
				case 5:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVBidirectionalParameterType->EVMaximumDischargeCurrent);
					grammarID = 1927;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1922:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}TargetSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BulkSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumDischargePower), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMinimumDischargePower), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumDischargeCurrent)] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DC_EVBidirectionalParameterType->TargetSOC = (int8_t)(uint32 + 0);
							iso2DC_EVBidirectionalParameterType->TargetSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}TargetSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1923;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DC_EVBidirectionalParameterType->BulkSOC = (int8_t)(uint32 + 0);
							iso2DC_EVBidirectionalParameterType->BulkSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BulkSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1924;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 2:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVBidirectionalParameterType->EVMaximumDischargePower);
					iso2DC_EVBidirectionalParameterType->EVMaximumDischargePower_isUsed = 1u;
					grammarID = 1925;
					break;
				case 3:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVBidirectionalParameterType->EVMinimumDischargePower);
					iso2DC_EVBidirectionalParameterType->EVMinimumDischargePower_isUsed = 1u;
					grammarID = 1926;
					break;
				case 4:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVBidirectionalParameterType->EVMaximumDischargeCurrent);
					grammarID = 1927;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1923:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BulkSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumDischargePower), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMinimumDischargePower), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumDischargeCurrent)] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DC_EVBidirectionalParameterType->BulkSOC = (int8_t)(uint32 + 0);
							iso2DC_EVBidirectionalParameterType->BulkSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BulkSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1924;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVBidirectionalParameterType->EVMaximumDischargePower);
					iso2DC_EVBidirectionalParameterType->EVMaximumDischargePower_isUsed = 1u;
					grammarID = 1925;
					break;
				case 2:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVBidirectionalParameterType->EVMinimumDischargePower);
					iso2DC_EVBidirectionalParameterType->EVMinimumDischargePower_isUsed = 1u;
					grammarID = 1926;
					break;
				case 3:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVBidirectionalParameterType->EVMaximumDischargeCurrent);
					grammarID = 1927;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1924:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumDischargePower), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMinimumDischargePower), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumDischargeCurrent)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVBidirectionalParameterType->EVMaximumDischargePower);
					iso2DC_EVBidirectionalParameterType->EVMaximumDischargePower_isUsed = 1u;
					grammarID = 1925;
					break;
				case 1:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVBidirectionalParameterType->EVMinimumDischargePower);
					iso2DC_EVBidirectionalParameterType->EVMinimumDischargePower_isUsed = 1u;
					grammarID = 1926;
					break;
				case 2:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVBidirectionalParameterType->EVMaximumDischargeCurrent);
					grammarID = 1927;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1925:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMinimumDischargePower), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumDischargeCurrent)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVBidirectionalParameterType->EVMinimumDischargePower);
					iso2DC_EVBidirectionalParameterType->EVMinimumDischargePower_isUsed = 1u;
					grammarID = 1926;
					break;
				case 1:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVBidirectionalParameterType->EVMaximumDischargeCurrent);
					grammarID = 1927;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1926:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumDischargeCurrent)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVBidirectionalParameterType->EVMaximumDischargeCurrent);
					grammarID = 1927;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1927:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMinimumDischargeCurrent)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVBidirectionalParameterType->EVMinimumDischargeCurrent);
					grammarID = 1928;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1928:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMinimumVoltage)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVBidirectionalParameterType->EVMinimumVoltage);
					grammarID = 1929;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1929:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MinimumSOC), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DC_EVBidirectionalParameterType->MinimumSOC = (int8_t)(uint32 + 0);
							iso2DC_EVBidirectionalParameterType->MinimumSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MinimumSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,PaymentServiceSelectionReqType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgBody":SelectedPaymentOption,"urn:iso:15118:2:2016:MsgBody":SelectedEnergyTransferService,"urn:iso:15118:2:2016:MsgBody":SelectedVASList{0-1})',  derivedBy='EXTENSION'.  */
static int decode_iso2PaymentServiceSelectionReqType(bitstream_t* stream, struct iso2PaymentServiceSelectionReqType* iso2PaymentServiceSelectionReqType) {
	int grammarID = 1930;
	int done = 0;
	
	init_iso2PaymentServiceSelectionReqType(iso2PaymentServiceSelectionReqType);
	
	while(!done) {
		switch(grammarID) {
		case 1930:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SelectedPaymentOption)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 1, &uint32);
							iso2PaymentServiceSelectionReqType->SelectedPaymentOption = (iso2paymentOptionType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SelectedPaymentOption) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1931;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1931:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SelectedEnergyTransferService)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2SelectedServiceType(stream, &iso2PaymentServiceSelectionReqType->SelectedEnergyTransferService);
					grammarID = 1932;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1932:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SelectedVASList), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2SelectedServiceListType(stream, &iso2PaymentServiceSelectionReqType->SelectedVASList);
					iso2PaymentServiceSelectionReqType->SelectedVASList_isUsed = 1u;
					grammarID = 3;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,MagneticVectorType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgDataTypes":GAID,"urn:iso:15118:2:2016:MsgDataTypes":Distance,"urn:iso:15118:2:2016:MsgDataTypes":AngleGAtoVA,"urn:iso:15118:2:2016:MsgDataTypes":RotationVAtoGA,"urn:iso:15118:2:2016:MsgDataTypes":FODStatus)',  derivedBy='RESTRICTION'.  */
static int decode_iso2MagneticVectorType(bitstream_t* stream, struct iso2MagneticVectorType* iso2MagneticVectorType) {
	int grammarID = 1933;
	int done = 0;
	
	init_iso2MagneticVectorType(iso2MagneticVectorType);
	
	while(!done) {
		switch(grammarID) {
		case 1933:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}GAID)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[STRING]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2MagneticVectorType->GAID.charactersLen);
							if (errn == 0) {
								if (iso2MagneticVectorType->GAID.charactersLen >= 2) {
									iso2MagneticVectorType->GAID.charactersLen = (uint16_t)(iso2MagneticVectorType->GAID.charactersLen - 2); /* string table miss */
									errn = decodeCharacters(stream, iso2MagneticVectorType->GAID.charactersLen, iso2MagneticVectorType->GAID.characters, iso2MagneticVectorType_GAID_CHARACTERS_SIZE);
								} else {
									/* string table hit */
									errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
								}
							}
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}GAID) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1934;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1934:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Distance)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2MagneticVectorType->Distance);
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Distance) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1935;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1935:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}AngleGAtoVA)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2MagneticVectorType->AngleGAtoVA);
					grammarID = 1936;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1936:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RotationVAtoGA)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2MagneticVectorType->RotationVAtoGA);
					grammarID = 1937;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1937:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}FODStatus)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
							iso2MagneticVectorType->FODStatus = (iso2FODStatusType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}FODStatus) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,PhysicalValueType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgDataTypes":Exponent,"urn:iso:15118:2:2016:MsgDataTypes":Value)',  derivedBy='RESTRICTION'.  */
static int decode_iso2PhysicalValueType(bitstream_t* stream, struct iso2PhysicalValueType* iso2PhysicalValueType) {
	int grammarID = 1938;
	int done = 0;
	
	init_iso2PhysicalValueType(iso2PhysicalValueType);
	
	while(!done) {
		switch(grammarID) {
		case 1938:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Exponent)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 3, &(uint32));
							iso2PhysicalValueType->Exponent = (int8_t)(uint32 -3);
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Exponent) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1939;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1939:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Value)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeInteger16(stream, &iso2PhysicalValueType->Value);
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Value) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,SystemStatusReqType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgBody":OperationMode,"urn:iso:15118:2:2016:MsgBody":EVMechanicalChargingDeviceStatus)',  derivedBy='EXTENSION'.  */
static int decode_iso2SystemStatusReqType(bitstream_t* stream, struct iso2SystemStatusReqType* iso2SystemStatusReqType) {
	int grammarID = 1940;
	int done = 0;
	
	init_iso2SystemStatusReqType(iso2SystemStatusReqType);
	
	while(!done) {
		switch(grammarID) {
		case 1940:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}OperationMode)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 1, &uint32);
							iso2SystemStatusReqType->OperationMode = (iso2operationModeType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}OperationMode) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1497;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1497:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMechanicalChargingDeviceStatus)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
							iso2SystemStatusReqType->EVMechanicalChargingDeviceStatus = (iso2mechanicalChargingDeviceStatusType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMechanicalChargingDeviceStatus) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,SystemStatusResType',  base type name='V2GResponseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(("urn:iso:15118:2:2016:MsgBody":ResponseCode,"urn:iso:15118:2:2016:MsgBody":EVSEStatus{0-1}),("urn:iso:15118:2:2016:MsgBody":OperationMode,"urn:iso:15118:2:2016:MsgBody":EVSEMechanicalChargingDeviceStatus))',  derivedBy='EXTENSION'.  */
static int decode_iso2SystemStatusResType(bitstream_t* stream, struct iso2SystemStatusResType* iso2SystemStatusResType) {
	int grammarID = 1941;
	int done = 0;
	
	init_iso2SystemStatusResType(iso2SystemStatusResType);
	
	while(!done) {
		switch(grammarID) {
		case 1941:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 5, &uint32);
							iso2SystemStatusResType->ResponseCode = (iso2responseCodeType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1942;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1942:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}OperationMode)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2EVSEStatusType(stream, &iso2SystemStatusResType->EVSEStatus);
					iso2SystemStatusResType->EVSEStatus_isUsed = 1u;
					grammarID = 1943;
					break;
				case 1:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 1, &uint32);
							iso2SystemStatusResType->OperationMode = (iso2operationModeType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}OperationMode) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 595;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1943:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}OperationMode)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 1, &uint32);
							iso2SystemStatusResType->OperationMode = (iso2operationModeType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}OperationMode) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 595;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 595:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEMechanicalChargingDeviceStatus)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
							iso2SystemStatusResType->EVSEMechanicalChargingDeviceStatus = (iso2mechanicalChargingDeviceStatusType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEMechanicalChargingDeviceStatus) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,EVSEFinePositioningSetupParametersType',  base type name='anyType',  content type='EMPTY',  isAbstract='true',  hasTypeId='false',  final='0',  block='0',  derivedBy='RESTRICTION'.  */
static int decode_iso2EVSEFinePositioningSetupParametersType(bitstream_t* stream, struct iso2EVSEFinePositioningSetupParametersType* iso2EVSEFinePositioningSetupParametersType) {
	int grammarID = 674;
	int done = 0;
	
	init_iso2EVSEFinePositioningSetupParametersType(iso2EVSEFinePositioningSetupParametersType);
	
	while(!done) {
		switch(grammarID) {
		case 674:
			/* FirstStartTag[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,V2GResponseType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='true',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgBody":ResponseCode,"urn:iso:15118:2:2016:MsgBody":EVSEStatus{0-1})',  derivedBy='EXTENSION'.  */
static int decode_iso2V2GResponseType(bitstream_t* stream, struct iso2V2GResponseType* iso2V2GResponseType) {
	int grammarID = 599;
	int done = 0;
	
	init_iso2V2GResponseType(iso2V2GResponseType);
	
	while(!done) {
		switch(grammarID) {
		case 599:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 5, &uint32);
							iso2V2GResponseType->ResponseCode = (iso2responseCodeType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 600;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 600:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEStatus), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2EVSEStatusType(stream, &iso2V2GResponseType->EVSEStatus);
					iso2V2GResponseType->EVSEStatus_isUsed = 1u;
					grammarID = 3;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,BodyType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgBody":BodyElement)',  derivedBy='RESTRICTION'.  */
static int decode_iso2BodyType(bitstream_t* stream, struct iso2BodyType* iso2BodyType) {
	int grammarID = 1944;
	int done = 0;
	
	init_iso2BodyType(iso2BodyType);
	
	while(!done) {
		switch(grammarID) {
		case 1944:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}AC_BidirectionalControlReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}AC_BidirectionalControlRes), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}AlignmentCheckReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}AlignmentCheckRes), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}AuthorizationReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}AuthorizationRes), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}BodyElement), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}CableCheckReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}CableCheckRes), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}CertificateInstallationReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}CertificateInstallationRes), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}CertificateUpdateReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}CertificateUpdateRes), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ChargeParameterDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ChargeParameterDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ChargingStatusReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ChargingStatusRes), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ConnectChargingDeviceReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ConnectChargingDeviceRes), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}CurrentDemandReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}CurrentDemandRes), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}DC_BidirectionalControlReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}DC_BidirectionalControlRes), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}DisconnectChargingDeviceReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}DisconnectChargingDeviceRes), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}FinePositioningReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}FinePositioningRes), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}FinePositioningSetupReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}FinePositioningSetupRes), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}MeteringReceiptRes), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PairingReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PairingRes), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PaymentServiceSelectionReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PaymentServiceSelectionRes), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PowerDemandReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PowerDemandRes), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PreChargeReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PreChargeRes), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ServiceDetailReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ServiceDetailRes), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SessionStopReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SessionStopRes), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SystemStatusReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SystemStatusRes), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}V2GRequest), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}V2GResponse), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}VehicleCheckInReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}VehicleCheckInRes), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}VehicleCheckOutReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}VehicleCheckOutRes), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}WeldingDetectionReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}WeldingDetectionRes)] */
			errn = decodeNBitUnsignedInteger(stream, 6, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2AC_BidirectionalControlReqType(stream, &iso2BodyType->AC_BidirectionalControlReq);
					iso2BodyType->AC_BidirectionalControlReq_isUsed = 1u;
					grammarID = 3;
					break;
				case 1:
					errn = decode_iso2AC_BidirectionalControlResType(stream, &iso2BodyType->AC_BidirectionalControlRes);
					iso2BodyType->AC_BidirectionalControlRes_isUsed = 1u;
					grammarID = 3;
					break;
				case 2:
					errn = decode_iso2AlignmentCheckReqType(stream, &iso2BodyType->AlignmentCheckReq);
					iso2BodyType->AlignmentCheckReq_isUsed = 1u;
					grammarID = 3;
					break;
				case 3:
					errn = decode_iso2AlignmentCheckResType(stream, &iso2BodyType->AlignmentCheckRes);
					iso2BodyType->AlignmentCheckRes_isUsed = 1u;
					grammarID = 3;
					break;
				case 4:
					errn = decode_iso2AuthorizationReqType(stream, &iso2BodyType->AuthorizationReq);
					iso2BodyType->AuthorizationReq_isUsed = 1u;
					grammarID = 3;
					break;
				case 5:
					errn = decode_iso2AuthorizationResType(stream, &iso2BodyType->AuthorizationRes);
					iso2BodyType->AuthorizationRes_isUsed = 1u;
					grammarID = 3;
					break;
				case 6:
					errn = decode_iso2BodyBaseType(stream, &iso2BodyType->BodyElement);
					iso2BodyType->BodyElement_isUsed = 1u;
					grammarID = 3;
					break;
				case 7:
					errn = decode_iso2CableCheckReqType(stream, &iso2BodyType->CableCheckReq);
					iso2BodyType->CableCheckReq_isUsed = 1u;
					grammarID = 3;
					break;
				case 8:
					errn = decode_iso2CableCheckResType(stream, &iso2BodyType->CableCheckRes);
					iso2BodyType->CableCheckRes_isUsed = 1u;
					grammarID = 3;
					break;
				case 9:
					errn = decode_iso2CertificateInstallationReqType(stream, &iso2BodyType->CertificateInstallationReq);
					iso2BodyType->CertificateInstallationReq_isUsed = 1u;
					grammarID = 3;
					break;
				case 10:
					errn = decode_iso2CertificateInstallationResType(stream, &iso2BodyType->CertificateInstallationRes);
					iso2BodyType->CertificateInstallationRes_isUsed = 1u;
					grammarID = 3;
					break;
				case 11:
					errn = decode_iso2CertificateUpdateReqType(stream, &iso2BodyType->CertificateUpdateReq);
					iso2BodyType->CertificateUpdateReq_isUsed = 1u;
					grammarID = 3;
					break;
				case 12:
					errn = decode_iso2CertificateUpdateResType(stream, &iso2BodyType->CertificateUpdateRes);
					iso2BodyType->CertificateUpdateRes_isUsed = 1u;
					grammarID = 3;
					break;
				case 13:
					errn = decode_iso2ChargeParameterDiscoveryReqType(stream, &iso2BodyType->ChargeParameterDiscoveryReq);
					iso2BodyType->ChargeParameterDiscoveryReq_isUsed = 1u;
					grammarID = 3;
					break;
				case 14:
					errn = decode_iso2ChargeParameterDiscoveryResType(stream, &iso2BodyType->ChargeParameterDiscoveryRes);
					iso2BodyType->ChargeParameterDiscoveryRes_isUsed = 1u;
					grammarID = 3;
					break;
				case 15:
					errn = decode_iso2ChargingStatusReqType(stream, &iso2BodyType->ChargingStatusReq);
					iso2BodyType->ChargingStatusReq_isUsed = 1u;
					grammarID = 3;
					break;
				case 16:
					errn = decode_iso2ChargingStatusResType(stream, &iso2BodyType->ChargingStatusRes);
					iso2BodyType->ChargingStatusRes_isUsed = 1u;
					grammarID = 3;
					break;
				case 17:
					errn = decode_iso2ConnectChargingDeviceReqType(stream, &iso2BodyType->ConnectChargingDeviceReq);
					iso2BodyType->ConnectChargingDeviceReq_isUsed = 1u;
					grammarID = 3;
					break;
				case 18:
					errn = decode_iso2ConnectChargingDeviceResType(stream, &iso2BodyType->ConnectChargingDeviceRes);
					iso2BodyType->ConnectChargingDeviceRes_isUsed = 1u;
					grammarID = 3;
					break;
				case 19:
					errn = decode_iso2CurrentDemandReqType(stream, &iso2BodyType->CurrentDemandReq);
					iso2BodyType->CurrentDemandReq_isUsed = 1u;
					grammarID = 3;
					break;
				case 20:
					errn = decode_iso2CurrentDemandResType(stream, &iso2BodyType->CurrentDemandRes);
					iso2BodyType->CurrentDemandRes_isUsed = 1u;
					grammarID = 3;
					break;
				case 21:
					errn = decode_iso2DC_BidirectionalControlReqType(stream, &iso2BodyType->DC_BidirectionalControlReq);
					iso2BodyType->DC_BidirectionalControlReq_isUsed = 1u;
					grammarID = 3;
					break;
				case 22:
					errn = decode_iso2DC_BidirectionalControlResType(stream, &iso2BodyType->DC_BidirectionalControlRes);
					iso2BodyType->DC_BidirectionalControlRes_isUsed = 1u;
					grammarID = 3;
					break;
				case 23:
					errn = decode_iso2DisconnectChargingDeviceReqType(stream, &iso2BodyType->DisconnectChargingDeviceReq);
					iso2BodyType->DisconnectChargingDeviceReq_isUsed = 1u;
					grammarID = 3;
					break;
				case 24:
					errn = decode_iso2DisconnectChargingDeviceResType(stream, &iso2BodyType->DisconnectChargingDeviceRes);
					iso2BodyType->DisconnectChargingDeviceRes_isUsed = 1u;
					grammarID = 3;
					break;
				case 25:
					errn = decode_iso2FinePositioningReqType(stream, &iso2BodyType->FinePositioningReq);
					iso2BodyType->FinePositioningReq_isUsed = 1u;
					grammarID = 3;
					break;
				case 26:
					errn = decode_iso2FinePositioningResType(stream, &iso2BodyType->FinePositioningRes);
					iso2BodyType->FinePositioningRes_isUsed = 1u;
					grammarID = 3;
					break;
				case 27:
					errn = decode_iso2FinePositioningSetupReqType(stream, &iso2BodyType->FinePositioningSetupReq);
					iso2BodyType->FinePositioningSetupReq_isUsed = 1u;
					grammarID = 3;
					break;
				case 28:
					errn = decode_iso2FinePositioningSetupResType(stream, &iso2BodyType->FinePositioningSetupRes);
					iso2BodyType->FinePositioningSetupRes_isUsed = 1u;
					grammarID = 3;
					break;
				case 29:
					errn = decode_iso2MeteringReceiptReqType(stream, &iso2BodyType->MeteringReceiptReq);
					iso2BodyType->MeteringReceiptReq_isUsed = 1u;
					grammarID = 3;
					break;
				case 30:
					errn = decode_iso2MeteringReceiptResType(stream, &iso2BodyType->MeteringReceiptRes);
					iso2BodyType->MeteringReceiptRes_isUsed = 1u;
					grammarID = 3;
					break;
				case 31:
					errn = decode_iso2PairingReqType(stream, &iso2BodyType->PairingReq);
					iso2BodyType->PairingReq_isUsed = 1u;
					grammarID = 3;
					break;
				case 32:
					errn = decode_iso2PairingResType(stream, &iso2BodyType->PairingRes);
					iso2BodyType->PairingRes_isUsed = 1u;
					grammarID = 3;
					break;
				case 33:
					errn = decode_iso2PaymentDetailsReqType(stream, &iso2BodyType->PaymentDetailsReq);
					iso2BodyType->PaymentDetailsReq_isUsed = 1u;
					grammarID = 3;
					break;
				case 34:
					errn = decode_iso2PaymentDetailsResType(stream, &iso2BodyType->PaymentDetailsRes);
					iso2BodyType->PaymentDetailsRes_isUsed = 1u;
					grammarID = 3;
					break;
				case 35:
					errn = decode_iso2PaymentServiceSelectionReqType(stream, &iso2BodyType->PaymentServiceSelectionReq);
					iso2BodyType->PaymentServiceSelectionReq_isUsed = 1u;
					grammarID = 3;
					break;
				case 36:
					errn = decode_iso2PaymentServiceSelectionResType(stream, &iso2BodyType->PaymentServiceSelectionRes);
					iso2BodyType->PaymentServiceSelectionRes_isUsed = 1u;
					grammarID = 3;
					break;
				case 37:
					errn = decode_iso2PowerDeliveryReqType(stream, &iso2BodyType->PowerDeliveryReq);
					iso2BodyType->PowerDeliveryReq_isUsed = 1u;
					grammarID = 3;
					break;
				case 38:
					errn = decode_iso2PowerDeliveryResType(stream, &iso2BodyType->PowerDeliveryRes);
					iso2BodyType->PowerDeliveryRes_isUsed = 1u;
					grammarID = 3;
					break;
				case 39:
					errn = decode_iso2PowerDemandReqType(stream, &iso2BodyType->PowerDemandReq);
					iso2BodyType->PowerDemandReq_isUsed = 1u;
					grammarID = 3;
					break;
				case 40:
					errn = decode_iso2PowerDemandResType(stream, &iso2BodyType->PowerDemandRes);
					iso2BodyType->PowerDemandRes_isUsed = 1u;
					grammarID = 3;
					break;
				case 41:
					errn = decode_iso2PreChargeReqType(stream, &iso2BodyType->PreChargeReq);
					iso2BodyType->PreChargeReq_isUsed = 1u;
					grammarID = 3;
					break;
				case 42:
					errn = decode_iso2PreChargeResType(stream, &iso2BodyType->PreChargeRes);
					iso2BodyType->PreChargeRes_isUsed = 1u;
					grammarID = 3;
					break;
				case 43:
					errn = decode_iso2ServiceDetailReqType(stream, &iso2BodyType->ServiceDetailReq);
					iso2BodyType->ServiceDetailReq_isUsed = 1u;
					grammarID = 3;
					break;
				case 44:
					errn = decode_iso2ServiceDetailResType(stream, &iso2BodyType->ServiceDetailRes);
					iso2BodyType->ServiceDetailRes_isUsed = 1u;
					grammarID = 3;
					break;
				case 45:
					errn = decode_iso2ServiceDiscoveryReqType(stream, &iso2BodyType->ServiceDiscoveryReq);
					iso2BodyType->ServiceDiscoveryReq_isUsed = 1u;
					grammarID = 3;
					break;
				case 46:
					errn = decode_iso2ServiceDiscoveryResType(stream, &iso2BodyType->ServiceDiscoveryRes);
					iso2BodyType->ServiceDiscoveryRes_isUsed = 1u;
					grammarID = 3;
					break;
				case 47:
					errn = decode_iso2SessionSetupReqType(stream, &iso2BodyType->SessionSetupReq);
					iso2BodyType->SessionSetupReq_isUsed = 1u;
					grammarID = 3;
					break;
				case 48:
					errn = decode_iso2SessionSetupResType(stream, &iso2BodyType->SessionSetupRes);
					iso2BodyType->SessionSetupRes_isUsed = 1u;
					grammarID = 3;
					break;
				case 49:
					errn = decode_iso2SessionStopReqType(stream, &iso2BodyType->SessionStopReq);
					iso2BodyType->SessionStopReq_isUsed = 1u;
					grammarID = 3;
					break;
				case 50:
					errn = decode_iso2SessionStopResType(stream, &iso2BodyType->SessionStopRes);
					iso2BodyType->SessionStopRes_isUsed = 1u;
					grammarID = 3;
					break;
				case 51:
					errn = decode_iso2SystemStatusReqType(stream, &iso2BodyType->SystemStatusReq);
					iso2BodyType->SystemStatusReq_isUsed = 1u;
					grammarID = 3;
					break;
				case 52:
					errn = decode_iso2SystemStatusResType(stream, &iso2BodyType->SystemStatusRes);
					iso2BodyType->SystemStatusRes_isUsed = 1u;
					grammarID = 3;
					break;
				case 53:
					errn = decode_iso2BodyBaseType(stream, &iso2BodyType->V2GRequest);
					iso2BodyType->V2GRequest_isUsed = 1u;
					grammarID = 3;
					break;
				case 54:
					errn = decode_iso2V2GResponseType(stream, &iso2BodyType->V2GResponse);
					iso2BodyType->V2GResponse_isUsed = 1u;
					grammarID = 3;
					break;
				case 55:
					errn = decode_iso2VehicleCheckInReqType(stream, &iso2BodyType->VehicleCheckInReq);
					iso2BodyType->VehicleCheckInReq_isUsed = 1u;
					grammarID = 3;
					break;
				case 56:
					errn = decode_iso2VehicleCheckInResType(stream, &iso2BodyType->VehicleCheckInRes);
					iso2BodyType->VehicleCheckInRes_isUsed = 1u;
					grammarID = 3;
					break;
				case 57:
					errn = decode_iso2VehicleCheckOutReqType(stream, &iso2BodyType->VehicleCheckOutReq);
					iso2BodyType->VehicleCheckOutReq_isUsed = 1u;
					grammarID = 3;
					break;
				case 58:
					errn = decode_iso2VehicleCheckOutResType(stream, &iso2BodyType->VehicleCheckOutRes);
					iso2BodyType->VehicleCheckOutRes_isUsed = 1u;
					grammarID = 3;
					break;
				case 59:
					errn = decode_iso2WeldingDetectionReqType(stream, &iso2BodyType->WeldingDetectionReq);
					iso2BodyType->WeldingDetectionReq_isUsed = 1u;
					grammarID = 3;
					break;
				case 60:
					errn = decode_iso2WeldingDetectionResType(stream, &iso2BodyType->WeldingDetectionRes);
					iso2BodyType->WeldingDetectionRes_isUsed = 1u;
					grammarID = 3;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,PreChargeResType',  base type name='V2GResponseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(("urn:iso:15118:2:2016:MsgBody":ResponseCode,"urn:iso:15118:2:2016:MsgBody":EVSEStatus{0-1}),("urn:iso:15118:2:2016:MsgBody":EVSEPresentVoltage))',  derivedBy='EXTENSION'.  */
static int decode_iso2PreChargeResType(bitstream_t* stream, struct iso2PreChargeResType* iso2PreChargeResType) {
	int grammarID = 596;
	int done = 0;
	
	init_iso2PreChargeResType(iso2PreChargeResType);
	
	while(!done) {
		switch(grammarID) {
		case 596:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 5, &uint32);
							iso2PreChargeResType->ResponseCode = (iso2responseCodeType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 597;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 597:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEPresentVoltage)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2EVSEStatusType(stream, &iso2PreChargeResType->EVSEStatus);
					iso2PreChargeResType->EVSEStatus_isUsed = 1u;
					grammarID = 598;
					break;
				case 1:
					errn = decode_iso2PhysicalValueType(stream, &iso2PreChargeResType->EVSEPresentVoltage);
					grammarID = 3;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 598:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEPresentVoltage)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2PreChargeResType->EVSEPresentVoltage);
					grammarID = 3;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,EVSEFinePositioningParametersType',  base type name='anyType',  content type='EMPTY',  isAbstract='true',  hasTypeId='false',  final='0',  block='0',  derivedBy='RESTRICTION'.  */
static int decode_iso2EVSEFinePositioningParametersType(bitstream_t* stream, struct iso2EVSEFinePositioningParametersType* iso2EVSEFinePositioningParametersType) {
	int grammarID = 674;
	int done = 0;
	
	init_iso2EVSEFinePositioningParametersType(iso2EVSEFinePositioningParametersType);
	
	while(!done) {
		switch(grammarID) {
		case 674:
			/* FirstStartTag[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,PaymentServiceSelectionResType',  base type name='V2GResponseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgBody":ResponseCode,"urn:iso:15118:2:2016:MsgBody":EVSEStatus{0-1})',  derivedBy='EXTENSION'.  */
static int decode_iso2PaymentServiceSelectionResType(bitstream_t* stream, struct iso2PaymentServiceSelectionResType* iso2PaymentServiceSelectionResType) {
	int grammarID = 599;
	int done = 0;
	
	init_iso2PaymentServiceSelectionResType(iso2PaymentServiceSelectionResType);
	
	while(!done) {
		switch(grammarID) {
		case 599:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 5, &uint32);
							iso2PaymentServiceSelectionResType->ResponseCode = (iso2responseCodeType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 600;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 600:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEStatus), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2EVSEStatusType(stream, &iso2PaymentServiceSelectionResType->EVSEStatus);
					iso2PaymentServiceSelectionResType->EVSEStatus_isUsed = 1u;
					grammarID = 3;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='http://www.w3.org/2000/09/xmldsig#,DigestMethodType',  base type name='anyType',  content type='MIXED',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='((WC[##other:"http://www.w3.org/2000/09/xmldsig#"]){0-UNBOUNDED})',  derivedBy='RESTRICTION'.  */
static int decode_iso2DigestMethodType(bitstream_t* stream, struct iso2DigestMethodType* iso2DigestMethodType) {
	int grammarID = 1899;
	int done = 0;
	
	init_iso2DigestMethodType(iso2DigestMethodType);
	
	while(!done) {
		switch(grammarID) {
		case 1899:
			/* FirstStartTag[ATTRIBUTE[STRING](Algorithm)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decodeUnsignedInteger16(stream, &iso2DigestMethodType->Algorithm.charactersLen);
					if (errn == 0) {
						if (iso2DigestMethodType->Algorithm.charactersLen >= 2) {
							iso2DigestMethodType->Algorithm.charactersLen = (uint16_t)(iso2DigestMethodType->Algorithm.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2DigestMethodType->Algorithm.charactersLen, iso2DigestMethodType->Algorithm.characters, iso2DigestMethodType_Algorithm_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					grammarID = 684;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 684:
			/* StartTag[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					/* TODO unsupported event : START_ELEMENT_GENERIC */
					grammarID = 685;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				case 2:
					errn = decodeUnsignedInteger16(stream, &iso2DigestMethodType->ANY.charactersLen);
					if (errn == 0) {
						if (iso2DigestMethodType->ANY.charactersLen >= 2) {
							iso2DigestMethodType->ANY.charactersLen = (uint16_t)(iso2DigestMethodType->ANY.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2DigestMethodType->ANY.charactersLen, iso2DigestMethodType->ANY.characters, iso2DigestMethodType_ANY_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					iso2DigestMethodType->ANY_isUsed = 1u;
					grammarID = 685;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 685:
			/* Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					/* TODO unsupported event : START_ELEMENT_GENERIC */
					grammarID = 685;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				case 2:
					errn = decodeUnsignedInteger16(stream, &iso2DigestMethodType->ANY.charactersLen);
					if (errn == 0) {
						if (iso2DigestMethodType->ANY.charactersLen >= 2) {
							iso2DigestMethodType->ANY.charactersLen = (uint16_t)(iso2DigestMethodType->ANY.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2DigestMethodType->ANY.charactersLen, iso2DigestMethodType->ANY.characters, iso2DigestMethodType_ANY_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					iso2DigestMethodType->ANY_isUsed = 1u;
					grammarID = 685;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,TargetPositionType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgDataTypes":TargetOffsetX,"urn:iso:15118:2:2016:MsgDataTypes":TargetOffsetY)',  derivedBy='RESTRICTION'.  */
static int decode_iso2TargetPositionType(bitstream_t* stream, struct iso2TargetPositionType* iso2TargetPositionType) {
	int grammarID = 1945;
	int done = 0;
	
	init_iso2TargetPositionType(iso2TargetPositionType);
	
	while(!done) {
		switch(grammarID) {
		case 1945:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}TargetOffsetX)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2TargetPositionType->TargetOffsetX);
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}TargetOffsetX) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1946;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1946:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}TargetOffsetY)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2TargetPositionType->TargetOffsetY);
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}TargetOffsetY) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,LFA_EVFinePositioningParametersType',  base type name='EVFinePositioningParametersType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgDataTypes":NumberOfSignalPackages,"urn:iso:15118:2:2016:MsgDataTypes":SensorPackageList)',  derivedBy='EXTENSION'.  */
static int decode_iso2LFA_EVFinePositioningParametersType(bitstream_t* stream, struct iso2LFA_EVFinePositioningParametersType* iso2LFA_EVFinePositioningParametersType) {
	int grammarID = 670;
	int done = 0;
	
	init_iso2LFA_EVFinePositioningParametersType(iso2LFA_EVFinePositioningParametersType);
	
	while(!done) {
		switch(grammarID) {
		case 670:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}NumberOfSignalPackages)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
							iso2LFA_EVFinePositioningParametersType->NumberOfSignalPackages = (uint8_t)(uint32 + 0);
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}NumberOfSignalPackages) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 671;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 671:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackageList)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2SensorPackageListType(stream, &iso2LFA_EVFinePositioningParametersType->SensorPackageList);
					grammarID = 3;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,DC_EVChargeParameterType',  base type name='EVEnergyTransferParameterType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(("urn:iso:15118:2:2016:MsgDataTypes":DepartureTime),("urn:iso:15118:2:2016:MsgDataTypes":EVMaximumChargePower{0-1},"urn:iso:15118:2:2016:MsgDataTypes":EVMinimumChargePower{0-1},"urn:iso:15118:2:2016:MsgDataTypes":EVMaximumChargeCurrent,"urn:iso:15118:2:2016:MsgDataTypes":EVMinimumChargeCurrent,"urn:iso:15118:2:2016:MsgDataTypes":EVMaximumVoltage,"urn:iso:15118:2:2016:MsgDataTypes":EVTargetEnergyRequest{0-1},"urn:iso:15118:2:2016:MsgDataTypes":EVMaximumEnergyRequest{0-1},"urn:iso:15118:2:2016:MsgDataTypes":EVMinimumEnergyRequest{0-1},"urn:iso:15118:2:2016:MsgDataTypes":CurrentSOC{0-1},"urn:iso:15118:2:2016:MsgDataTypes":TargetSOC{0-1},"urn:iso:15118:2:2016:MsgDataTypes":BulkSOC{0-1}))',  derivedBy='EXTENSION'.  */
static int decode_iso2DC_EVChargeParameterType(bitstream_t* stream, struct iso2DC_EVChargeParameterType* iso2DC_EVChargeParameterType) {
	int grammarID = 1947;
	int done = 0;
	
	init_iso2DC_EVChargeParameterType(iso2DC_EVChargeParameterType);
	
	while(!done) {
		switch(grammarID) {
		case 1947:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}DepartureTime)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger32(stream, &iso2DC_EVChargeParameterType->DepartureTime);
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}DepartureTime) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1948;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1948:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumChargePower), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMinimumChargePower), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumChargeCurrent)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVChargeParameterType->EVMaximumChargePower);
					iso2DC_EVChargeParameterType->EVMaximumChargePower_isUsed = 1u;
					grammarID = 1949;
					break;
				case 1:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVChargeParameterType->EVMinimumChargePower);
					iso2DC_EVChargeParameterType->EVMinimumChargePower_isUsed = 1u;
					grammarID = 1950;
					break;
				case 2:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVChargeParameterType->EVMaximumChargeCurrent);
					grammarID = 1951;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1949:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMinimumChargePower), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumChargeCurrent)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVChargeParameterType->EVMinimumChargePower);
					iso2DC_EVChargeParameterType->EVMinimumChargePower_isUsed = 1u;
					grammarID = 1950;
					break;
				case 1:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVChargeParameterType->EVMaximumChargeCurrent);
					grammarID = 1951;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1950:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumChargeCurrent)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVChargeParameterType->EVMaximumChargeCurrent);
					grammarID = 1951;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1951:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMinimumChargeCurrent)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVChargeParameterType->EVMinimumChargeCurrent);
					grammarID = 1952;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1952:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumVoltage)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVChargeParameterType->EVMaximumVoltage);
					grammarID = 1953;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1953:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVTargetEnergyRequest), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumEnergyRequest), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMinimumEnergyRequest), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}CurrentSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}TargetSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BulkSOC), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVChargeParameterType->EVTargetEnergyRequest);
					iso2DC_EVChargeParameterType->EVTargetEnergyRequest_isUsed = 1u;
					grammarID = 1954;
					break;
				case 1:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVChargeParameterType->EVMaximumEnergyRequest);
					iso2DC_EVChargeParameterType->EVMaximumEnergyRequest_isUsed = 1u;
					grammarID = 1955;
					break;
				case 2:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVChargeParameterType->EVMinimumEnergyRequest);
					iso2DC_EVChargeParameterType->EVMinimumEnergyRequest_isUsed = 1u;
					grammarID = 1956;
					break;
				case 3:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DC_EVChargeParameterType->CurrentSOC = (int8_t)(uint32 + 0);
							iso2DC_EVChargeParameterType->CurrentSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}CurrentSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1957;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 4:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DC_EVChargeParameterType->TargetSOC = (int8_t)(uint32 + 0);
							iso2DC_EVChargeParameterType->TargetSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}TargetSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1958;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 5:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DC_EVChargeParameterType->BulkSOC = (int8_t)(uint32 + 0);
							iso2DC_EVChargeParameterType->BulkSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BulkSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 6:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1954:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumEnergyRequest), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMinimumEnergyRequest), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}CurrentSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}TargetSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BulkSOC), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVChargeParameterType->EVMaximumEnergyRequest);
					iso2DC_EVChargeParameterType->EVMaximumEnergyRequest_isUsed = 1u;
					grammarID = 1955;
					break;
				case 1:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVChargeParameterType->EVMinimumEnergyRequest);
					iso2DC_EVChargeParameterType->EVMinimumEnergyRequest_isUsed = 1u;
					grammarID = 1956;
					break;
				case 2:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DC_EVChargeParameterType->CurrentSOC = (int8_t)(uint32 + 0);
							iso2DC_EVChargeParameterType->CurrentSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}CurrentSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1957;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 3:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DC_EVChargeParameterType->TargetSOC = (int8_t)(uint32 + 0);
							iso2DC_EVChargeParameterType->TargetSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}TargetSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1958;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 4:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DC_EVChargeParameterType->BulkSOC = (int8_t)(uint32 + 0);
							iso2DC_EVChargeParameterType->BulkSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BulkSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 5:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1955:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMinimumEnergyRequest), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}CurrentSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}TargetSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BulkSOC), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2DC_EVChargeParameterType->EVMinimumEnergyRequest);
					iso2DC_EVChargeParameterType->EVMinimumEnergyRequest_isUsed = 1u;
					grammarID = 1956;
					break;
				case 1:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DC_EVChargeParameterType->CurrentSOC = (int8_t)(uint32 + 0);
							iso2DC_EVChargeParameterType->CurrentSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}CurrentSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1957;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 2:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DC_EVChargeParameterType->TargetSOC = (int8_t)(uint32 + 0);
							iso2DC_EVChargeParameterType->TargetSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}TargetSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1958;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 3:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DC_EVChargeParameterType->BulkSOC = (int8_t)(uint32 + 0);
							iso2DC_EVChargeParameterType->BulkSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BulkSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 4:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1956:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}CurrentSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}TargetSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BulkSOC), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DC_EVChargeParameterType->CurrentSOC = (int8_t)(uint32 + 0);
							iso2DC_EVChargeParameterType->CurrentSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}CurrentSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1957;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DC_EVChargeParameterType->TargetSOC = (int8_t)(uint32 + 0);
							iso2DC_EVChargeParameterType->TargetSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}TargetSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1958;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 2:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DC_EVChargeParameterType->BulkSOC = (int8_t)(uint32 + 0);
							iso2DC_EVChargeParameterType->BulkSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BulkSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 3:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1957:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}TargetSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BulkSOC), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DC_EVChargeParameterType->TargetSOC = (int8_t)(uint32 + 0);
							iso2DC_EVChargeParameterType->TargetSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}TargetSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1958;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DC_EVChargeParameterType->BulkSOC = (int8_t)(uint32 + 0);
							iso2DC_EVChargeParameterType->BulkSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BulkSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 2:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1958:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BulkSOC), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
							iso2DC_EVChargeParameterType->BulkSOC = (int8_t)(uint32 + 0);
							iso2DC_EVChargeParameterType->BulkSOC_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BulkSOC) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,ServiceDetailReqType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgBody":ServiceID)',  derivedBy='EXTENSION'.  */
static int decode_iso2ServiceDetailReqType(bitstream_t* stream, struct iso2ServiceDetailReqType* iso2ServiceDetailReqType) {
	int grammarID = 1959;
	int done = 0;
	
	init_iso2ServiceDetailReqType(iso2ServiceDetailReqType);
	
	while(!done) {
		switch(grammarID) {
		case 1959:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ServiceID)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2ServiceDetailReqType->ServiceID);
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ServiceID) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,PreChargeReqType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgBody":EVTargetVoltage,"urn:iso:15118:2:2016:MsgBody":EVTargetCurrent)',  derivedBy='EXTENSION'.  */
static int decode_iso2PreChargeReqType(bitstream_t* stream, struct iso2PreChargeReqType* iso2PreChargeReqType) {
	int grammarID = 1960;
	int done = 0;
	
	init_iso2PreChargeReqType(iso2PreChargeReqType);
	
	while(!done) {
		switch(grammarID) {
		case 1960:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVTargetVoltage)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2PreChargeReqType->EVTargetVoltage);
					grammarID = 1961;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1961:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVTargetCurrent)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2PreChargeReqType->EVTargetCurrent);
					grammarID = 3;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='http://www.w3.org/2000/09/xmldsig#,ManifestType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("http://www.w3.org/2000/09/xmldsig#":Reference{1-UNBOUNDED})',  derivedBy='RESTRICTION'.  */
static int decode_iso2ManifestType(bitstream_t* stream, struct iso2ManifestType* iso2ManifestType) {
	int grammarID = 1962;
	int done = 0;
	
	init_iso2ManifestType(iso2ManifestType);
	
	while(!done) {
		switch(grammarID) {
		case 1962:
			/* FirstStartTag[ATTRIBUTE[STRING](Id), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decodeUnsignedInteger16(stream, &iso2ManifestType->Id.charactersLen);
					if (errn == 0) {
						if (iso2ManifestType->Id.charactersLen >= 2) {
							iso2ManifestType->Id.charactersLen = (uint16_t)(iso2ManifestType->Id.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2ManifestType->Id.charactersLen, iso2ManifestType->Id.characters, iso2ManifestType_Id_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					iso2ManifestType->Id_isUsed = 1u;
					grammarID = 1963;
					break;
				case 1:
					if (iso2ManifestType->Reference.arrayLen < iso2ManifestType_Reference_ARRAY_SIZE) {
						errn = decode_iso2ReferenceType(stream, &iso2ManifestType->Reference.array[iso2ManifestType->Reference.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1964;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1963:
			/* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ManifestType->Reference.arrayLen < iso2ManifestType_Reference_ARRAY_SIZE) {
						errn = decode_iso2ReferenceType(stream, &iso2ManifestType->Reference.array[iso2ManifestType->Reference.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1964;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1964:
			/* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ManifestType->Reference.arrayLen < iso2ManifestType_Reference_ARRAY_SIZE) {
						errn = decode_iso2ReferenceType(stream, &iso2ManifestType->Reference.array[iso2ManifestType->Reference.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1964;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDef,#AnonType_V2G_Message',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgDef":Header,"urn:iso:15118:2:2016:MsgDef":Body)',  derivedBy='RESTRICTION'.  */
static int decode_iso2AnonType_V2G_Message(bitstream_t* stream, struct iso2AnonType_V2G_Message* iso2AnonType_V2G_Message) {
	int grammarID = 1965;
	int done = 0;
	
	init_iso2AnonType_V2G_Message(iso2AnonType_V2G_Message);
	
	while(!done) {
		switch(grammarID) {
		case 1965:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDef}Header)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2MessageHeaderType(stream, &iso2AnonType_V2G_Message->Header);
					grammarID = 1966;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1966:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDef}Body)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2BodyType(stream, &iso2AnonType_V2G_Message->Body);
					grammarID = 3;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,SelectedServiceListType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgDataTypes":SelectedService{1-16})',  derivedBy='RESTRICTION'.  */
static int decode_iso2SelectedServiceListType(bitstream_t* stream, struct iso2SelectedServiceListType* iso2SelectedServiceListType) {
	int grammarID = 1967;
	int done = 0;
	
	init_iso2SelectedServiceListType(iso2SelectedServiceListType);
	
	while(!done) {
		switch(grammarID) {
		case 1967:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SelectedService)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SelectedServiceListType->SelectedService.arrayLen < iso2SelectedServiceListType_SelectedService_ARRAY_SIZE) {
						errn = decode_iso2SelectedServiceType(stream, &iso2SelectedServiceListType->SelectedService.array[iso2SelectedServiceListType->SelectedService.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1968;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1968:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SelectedService), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SelectedServiceListType->SelectedService.arrayLen < iso2SelectedServiceListType_SelectedService_ARRAY_SIZE) {
						errn = decode_iso2SelectedServiceType(stream, &iso2SelectedServiceListType->SelectedService.array[iso2SelectedServiceListType->SelectedService.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1969;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1969:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SelectedService), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SelectedServiceListType->SelectedService.arrayLen < iso2SelectedServiceListType_SelectedService_ARRAY_SIZE) {
						errn = decode_iso2SelectedServiceType(stream, &iso2SelectedServiceListType->SelectedService.array[iso2SelectedServiceListType->SelectedService.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1970;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1970:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SelectedService), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SelectedServiceListType->SelectedService.arrayLen < iso2SelectedServiceListType_SelectedService_ARRAY_SIZE) {
						errn = decode_iso2SelectedServiceType(stream, &iso2SelectedServiceListType->SelectedService.array[iso2SelectedServiceListType->SelectedService.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1971;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1971:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SelectedService), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SelectedServiceListType->SelectedService.arrayLen < iso2SelectedServiceListType_SelectedService_ARRAY_SIZE) {
						errn = decode_iso2SelectedServiceType(stream, &iso2SelectedServiceListType->SelectedService.array[iso2SelectedServiceListType->SelectedService.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1972;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1972:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SelectedService), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SelectedServiceListType->SelectedService.arrayLen < iso2SelectedServiceListType_SelectedService_ARRAY_SIZE) {
						errn = decode_iso2SelectedServiceType(stream, &iso2SelectedServiceListType->SelectedService.array[iso2SelectedServiceListType->SelectedService.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1973;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1973:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SelectedService), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SelectedServiceListType->SelectedService.arrayLen < iso2SelectedServiceListType_SelectedService_ARRAY_SIZE) {
						errn = decode_iso2SelectedServiceType(stream, &iso2SelectedServiceListType->SelectedService.array[iso2SelectedServiceListType->SelectedService.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1974;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1974:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SelectedService), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SelectedServiceListType->SelectedService.arrayLen < iso2SelectedServiceListType_SelectedService_ARRAY_SIZE) {
						errn = decode_iso2SelectedServiceType(stream, &iso2SelectedServiceListType->SelectedService.array[iso2SelectedServiceListType->SelectedService.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1975;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1975:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SelectedService), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SelectedServiceListType->SelectedService.arrayLen < iso2SelectedServiceListType_SelectedService_ARRAY_SIZE) {
						errn = decode_iso2SelectedServiceType(stream, &iso2SelectedServiceListType->SelectedService.array[iso2SelectedServiceListType->SelectedService.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1976;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1976:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SelectedService), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SelectedServiceListType->SelectedService.arrayLen < iso2SelectedServiceListType_SelectedService_ARRAY_SIZE) {
						errn = decode_iso2SelectedServiceType(stream, &iso2SelectedServiceListType->SelectedService.array[iso2SelectedServiceListType->SelectedService.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1977;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1977:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SelectedService), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SelectedServiceListType->SelectedService.arrayLen < iso2SelectedServiceListType_SelectedService_ARRAY_SIZE) {
						errn = decode_iso2SelectedServiceType(stream, &iso2SelectedServiceListType->SelectedService.array[iso2SelectedServiceListType->SelectedService.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1978;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1978:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SelectedService), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SelectedServiceListType->SelectedService.arrayLen < iso2SelectedServiceListType_SelectedService_ARRAY_SIZE) {
						errn = decode_iso2SelectedServiceType(stream, &iso2SelectedServiceListType->SelectedService.array[iso2SelectedServiceListType->SelectedService.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1979;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1979:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SelectedService), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SelectedServiceListType->SelectedService.arrayLen < iso2SelectedServiceListType_SelectedService_ARRAY_SIZE) {
						errn = decode_iso2SelectedServiceType(stream, &iso2SelectedServiceListType->SelectedService.array[iso2SelectedServiceListType->SelectedService.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1980;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1980:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SelectedService), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SelectedServiceListType->SelectedService.arrayLen < iso2SelectedServiceListType_SelectedService_ARRAY_SIZE) {
						errn = decode_iso2SelectedServiceType(stream, &iso2SelectedServiceListType->SelectedService.array[iso2SelectedServiceListType->SelectedService.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1981;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1981:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SelectedService), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SelectedServiceListType->SelectedService.arrayLen < iso2SelectedServiceListType_SelectedService_ARRAY_SIZE) {
						errn = decode_iso2SelectedServiceType(stream, &iso2SelectedServiceListType->SelectedService.array[iso2SelectedServiceListType->SelectedService.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1982;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1982:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SelectedService), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SelectedServiceListType->SelectedService.arrayLen < iso2SelectedServiceListType_SelectedService_ARRAY_SIZE) {
						errn = decode_iso2SelectedServiceType(stream, &iso2SelectedServiceListType->SelectedService.array[iso2SelectedServiceListType->SelectedService.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 3;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,Generic_EVSEFinePositioningParametersType',  base type name='EVSEFinePositioningParametersType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgDataTypes":GenericParameters)',  derivedBy='EXTENSION'.  */
static int decode_iso2Generic_EVSEFinePositioningParametersType(bitstream_t* stream, struct iso2Generic_EVSEFinePositioningParametersType* iso2Generic_EVSEFinePositioningParametersType) {
	int grammarID = 1880;
	int done = 0;
	
	init_iso2Generic_EVSEFinePositioningParametersType(iso2Generic_EVSEFinePositioningParametersType);
	
	while(!done) {
		switch(grammarID) {
		case 1880:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}GenericParameters)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2ParameterSetType(stream, &iso2Generic_EVSEFinePositioningParametersType->GenericParameters);
					grammarID = 3;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,CartesianCoordinatesType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgDataTypes":XCoordinate,"urn:iso:15118:2:2016:MsgDataTypes":YCoordinate,"urn:iso:15118:2:2016:MsgDataTypes":ZCoordinate)',  derivedBy='RESTRICTION'.  */
static int decode_iso2CartesianCoordinatesType(bitstream_t* stream, struct iso2CartesianCoordinatesType* iso2CartesianCoordinatesType) {
	int grammarID = 1983;
	int done = 0;
	
	init_iso2CartesianCoordinatesType(iso2CartesianCoordinatesType);
	
	while(!done) {
		switch(grammarID) {
		case 1983:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}XCoordinate)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeInteger16(stream, &iso2CartesianCoordinatesType->XCoordinate);
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}XCoordinate) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1984;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1984:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}YCoordinate)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeInteger16(stream, &iso2CartesianCoordinatesType->YCoordinate);
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}YCoordinate) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1985;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1985:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ZCoordinate)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeInteger16(stream, &iso2CartesianCoordinatesType->ZCoordinate);
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ZCoordinate) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='http://www.w3.org/2000/09/xmldsig#,KeyInfoType',  base type name='anyType',  content type='MIXED',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("http://www.w3.org/2000/09/xmldsig#":KeyName|"http://www.w3.org/2000/09/xmldsig#":KeyValue|"http://www.w3.org/2000/09/xmldsig#":RetrievalMethod|"http://www.w3.org/2000/09/xmldsig#":X509Data|"http://www.w3.org/2000/09/xmldsig#":PGPData|"http://www.w3.org/2000/09/xmldsig#":SPKIData|"http://www.w3.org/2000/09/xmldsig#":MgmtData|(WC[##other:"http://www.w3.org/2000/09/xmldsig#"])){1-UNBOUNDED}',  derivedBy='RESTRICTION'.  */
static int decode_iso2KeyInfoType(bitstream_t* stream, struct iso2KeyInfoType* iso2KeyInfoType) {
	int grammarID = 1986;
	int done = 0;
	
	init_iso2KeyInfoType(iso2KeyInfoType);
	
	while(!done) {
		switch(grammarID) {
		case 1986:
			/* FirstStartTag[ATTRIBUTE[STRING](Id), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */
			errn = decodeNBitUnsignedInteger(stream, 4, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decodeUnsignedInteger16(stream, &iso2KeyInfoType->Id.charactersLen);
					if (errn == 0) {
						if (iso2KeyInfoType->Id.charactersLen >= 2) {
							iso2KeyInfoType->Id.charactersLen = (uint16_t)(iso2KeyInfoType->Id.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2KeyInfoType->Id.charactersLen, iso2KeyInfoType->Id.characters, iso2KeyInfoType_Id_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					iso2KeyInfoType->Id_isUsed = 1u;
					grammarID = 1987;
					break;
				case 1:
					if (iso2KeyInfoType->KeyName.arrayLen < iso2KeyInfoType_KeyName_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[STRING]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2KeyInfoType->KeyName.array[iso2KeyInfoType->KeyName.arrayLen].charactersLen);
								if (errn == 0) {
									if (iso2KeyInfoType->KeyName.array[iso2KeyInfoType->KeyName.arrayLen].charactersLen >= 2) {
										iso2KeyInfoType->KeyName.array[iso2KeyInfoType->KeyName.arrayLen].charactersLen = (uint16_t)(iso2KeyInfoType->KeyName.array[iso2KeyInfoType->KeyName.arrayLen].charactersLen - 2); /* string table miss */
										errn = decodeCharacters(stream, iso2KeyInfoType->KeyName.array[iso2KeyInfoType->KeyName.arrayLen].charactersLen, iso2KeyInfoType->KeyName.array[iso2KeyInfoType->KeyName.arrayLen].characters, iso2KeyInfoType_KeyName_CHARACTERS_SIZE);
									} else {
										/* string table hit */
										errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
									}
								}
								iso2KeyInfoType->KeyName.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1988;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 2:
					if (iso2KeyInfoType->KeyValue.arrayLen < iso2KeyInfoType_KeyValue_ARRAY_SIZE) {
						errn = decode_iso2KeyValueType(stream, &iso2KeyInfoType->KeyValue.array[iso2KeyInfoType->KeyValue.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1988;
					break;
				case 3:
					if (iso2KeyInfoType->RetrievalMethod.arrayLen < iso2KeyInfoType_RetrievalMethod_ARRAY_SIZE) {
						errn = decode_iso2RetrievalMethodType(stream, &iso2KeyInfoType->RetrievalMethod.array[iso2KeyInfoType->RetrievalMethod.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1988;
					break;
				case 4:
					if (iso2KeyInfoType->X509Data.arrayLen < iso2KeyInfoType_X509Data_ARRAY_SIZE) {
						errn = decode_iso2X509DataType(stream, &iso2KeyInfoType->X509Data.array[iso2KeyInfoType->X509Data.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1988;
					break;
				case 5:
					if (iso2KeyInfoType->PGPData.arrayLen < iso2KeyInfoType_PGPData_ARRAY_SIZE) {
						errn = decode_iso2PGPDataType(stream, &iso2KeyInfoType->PGPData.array[iso2KeyInfoType->PGPData.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1988;
					break;
				case 6:
					if (iso2KeyInfoType->SPKIData.arrayLen < iso2KeyInfoType_SPKIData_ARRAY_SIZE) {
						errn = decode_iso2SPKIDataType(stream, &iso2KeyInfoType->SPKIData.array[iso2KeyInfoType->SPKIData.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1988;
					break;
				case 7:
					if (iso2KeyInfoType->MgmtData.arrayLen < iso2KeyInfoType_MgmtData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[STRING]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2KeyInfoType->MgmtData.array[iso2KeyInfoType->MgmtData.arrayLen].charactersLen);
								if (errn == 0) {
									if (iso2KeyInfoType->MgmtData.array[iso2KeyInfoType->MgmtData.arrayLen].charactersLen >= 2) {
										iso2KeyInfoType->MgmtData.array[iso2KeyInfoType->MgmtData.arrayLen].charactersLen = (uint16_t)(iso2KeyInfoType->MgmtData.array[iso2KeyInfoType->MgmtData.arrayLen].charactersLen - 2); /* string table miss */
										errn = decodeCharacters(stream, iso2KeyInfoType->MgmtData.array[iso2KeyInfoType->MgmtData.arrayLen].charactersLen, iso2KeyInfoType->MgmtData.array[iso2KeyInfoType->MgmtData.arrayLen].characters, iso2KeyInfoType_MgmtData_CHARACTERS_SIZE);
									} else {
										/* string table hit */
										errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
									}
								}
								iso2KeyInfoType->MgmtData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1988;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 8:
					errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					/* TODO unsupported event : START_ELEMENT_GENERIC */
					grammarID = 1988;
					break;
				case 9:
					errn = decodeUnsignedInteger16(stream, &iso2KeyInfoType->ANY.charactersLen);
					if (errn == 0) {
						if (iso2KeyInfoType->ANY.charactersLen >= 2) {
							iso2KeyInfoType->ANY.charactersLen = (uint16_t)(iso2KeyInfoType->ANY.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2KeyInfoType->ANY.charactersLen, iso2KeyInfoType->ANY.characters, iso2KeyInfoType_ANY_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					iso2KeyInfoType->ANY_isUsed = 1u;
					grammarID = 1989;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1987:
			/* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */
			errn = decodeNBitUnsignedInteger(stream, 4, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2KeyInfoType->KeyName.arrayLen < iso2KeyInfoType_KeyName_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[STRING]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2KeyInfoType->KeyName.array[iso2KeyInfoType->KeyName.arrayLen].charactersLen);
								if (errn == 0) {
									if (iso2KeyInfoType->KeyName.array[iso2KeyInfoType->KeyName.arrayLen].charactersLen >= 2) {
										iso2KeyInfoType->KeyName.array[iso2KeyInfoType->KeyName.arrayLen].charactersLen = (uint16_t)(iso2KeyInfoType->KeyName.array[iso2KeyInfoType->KeyName.arrayLen].charactersLen - 2); /* string table miss */
										errn = decodeCharacters(stream, iso2KeyInfoType->KeyName.array[iso2KeyInfoType->KeyName.arrayLen].charactersLen, iso2KeyInfoType->KeyName.array[iso2KeyInfoType->KeyName.arrayLen].characters, iso2KeyInfoType_KeyName_CHARACTERS_SIZE);
									} else {
										/* string table hit */
										errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
									}
								}
								iso2KeyInfoType->KeyName.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1988;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					if (iso2KeyInfoType->KeyValue.arrayLen < iso2KeyInfoType_KeyValue_ARRAY_SIZE) {
						errn = decode_iso2KeyValueType(stream, &iso2KeyInfoType->KeyValue.array[iso2KeyInfoType->KeyValue.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1988;
					break;
				case 2:
					if (iso2KeyInfoType->RetrievalMethod.arrayLen < iso2KeyInfoType_RetrievalMethod_ARRAY_SIZE) {
						errn = decode_iso2RetrievalMethodType(stream, &iso2KeyInfoType->RetrievalMethod.array[iso2KeyInfoType->RetrievalMethod.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1988;
					break;
				case 3:
					if (iso2KeyInfoType->X509Data.arrayLen < iso2KeyInfoType_X509Data_ARRAY_SIZE) {
						errn = decode_iso2X509DataType(stream, &iso2KeyInfoType->X509Data.array[iso2KeyInfoType->X509Data.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1988;
					break;
				case 4:
					if (iso2KeyInfoType->PGPData.arrayLen < iso2KeyInfoType_PGPData_ARRAY_SIZE) {
						errn = decode_iso2PGPDataType(stream, &iso2KeyInfoType->PGPData.array[iso2KeyInfoType->PGPData.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1988;
					break;
				case 5:
					if (iso2KeyInfoType->SPKIData.arrayLen < iso2KeyInfoType_SPKIData_ARRAY_SIZE) {
						errn = decode_iso2SPKIDataType(stream, &iso2KeyInfoType->SPKIData.array[iso2KeyInfoType->SPKIData.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1988;
					break;
				case 6:
					if (iso2KeyInfoType->MgmtData.arrayLen < iso2KeyInfoType_MgmtData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[STRING]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2KeyInfoType->MgmtData.array[iso2KeyInfoType->MgmtData.arrayLen].charactersLen);
								if (errn == 0) {
									if (iso2KeyInfoType->MgmtData.array[iso2KeyInfoType->MgmtData.arrayLen].charactersLen >= 2) {
										iso2KeyInfoType->MgmtData.array[iso2KeyInfoType->MgmtData.arrayLen].charactersLen = (uint16_t)(iso2KeyInfoType->MgmtData.array[iso2KeyInfoType->MgmtData.arrayLen].charactersLen - 2); /* string table miss */
										errn = decodeCharacters(stream, iso2KeyInfoType->MgmtData.array[iso2KeyInfoType->MgmtData.arrayLen].charactersLen, iso2KeyInfoType->MgmtData.array[iso2KeyInfoType->MgmtData.arrayLen].characters, iso2KeyInfoType_MgmtData_CHARACTERS_SIZE);
									} else {
										/* string table hit */
										errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
									}
								}
								iso2KeyInfoType->MgmtData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1988;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 7:
					errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					/* TODO unsupported event : START_ELEMENT_GENERIC */
					grammarID = 1988;
					break;
				case 8:
					errn = decodeUnsignedInteger16(stream, &iso2KeyInfoType->ANY.charactersLen);
					if (errn == 0) {
						if (iso2KeyInfoType->ANY.charactersLen >= 2) {
							iso2KeyInfoType->ANY.charactersLen = (uint16_t)(iso2KeyInfoType->ANY.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2KeyInfoType->ANY.charactersLen, iso2KeyInfoType->ANY.characters, iso2KeyInfoType_ANY_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					iso2KeyInfoType->ANY_isUsed = 1u;
					grammarID = 1989;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1988:
			/* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
			errn = decodeNBitUnsignedInteger(stream, 4, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2KeyInfoType->KeyName.arrayLen < iso2KeyInfoType_KeyName_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[STRING]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2KeyInfoType->KeyName.array[iso2KeyInfoType->KeyName.arrayLen].charactersLen);
								if (errn == 0) {
									if (iso2KeyInfoType->KeyName.array[iso2KeyInfoType->KeyName.arrayLen].charactersLen >= 2) {
										iso2KeyInfoType->KeyName.array[iso2KeyInfoType->KeyName.arrayLen].charactersLen = (uint16_t)(iso2KeyInfoType->KeyName.array[iso2KeyInfoType->KeyName.arrayLen].charactersLen - 2); /* string table miss */
										errn = decodeCharacters(stream, iso2KeyInfoType->KeyName.array[iso2KeyInfoType->KeyName.arrayLen].charactersLen, iso2KeyInfoType->KeyName.array[iso2KeyInfoType->KeyName.arrayLen].characters, iso2KeyInfoType_KeyName_CHARACTERS_SIZE);
									} else {
										/* string table hit */
										errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
									}
								}
								iso2KeyInfoType->KeyName.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1988;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					if (iso2KeyInfoType->KeyValue.arrayLen < iso2KeyInfoType_KeyValue_ARRAY_SIZE) {
						errn = decode_iso2KeyValueType(stream, &iso2KeyInfoType->KeyValue.array[iso2KeyInfoType->KeyValue.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1988;
					break;
				case 2:
					if (iso2KeyInfoType->RetrievalMethod.arrayLen < iso2KeyInfoType_RetrievalMethod_ARRAY_SIZE) {
						errn = decode_iso2RetrievalMethodType(stream, &iso2KeyInfoType->RetrievalMethod.array[iso2KeyInfoType->RetrievalMethod.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1988;
					break;
				case 3:
					if (iso2KeyInfoType->X509Data.arrayLen < iso2KeyInfoType_X509Data_ARRAY_SIZE) {
						errn = decode_iso2X509DataType(stream, &iso2KeyInfoType->X509Data.array[iso2KeyInfoType->X509Data.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1988;
					break;
				case 4:
					if (iso2KeyInfoType->PGPData.arrayLen < iso2KeyInfoType_PGPData_ARRAY_SIZE) {
						errn = decode_iso2PGPDataType(stream, &iso2KeyInfoType->PGPData.array[iso2KeyInfoType->PGPData.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1988;
					break;
				case 5:
					if (iso2KeyInfoType->SPKIData.arrayLen < iso2KeyInfoType_SPKIData_ARRAY_SIZE) {
						errn = decode_iso2SPKIDataType(stream, &iso2KeyInfoType->SPKIData.array[iso2KeyInfoType->SPKIData.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1988;
					break;
				case 6:
					if (iso2KeyInfoType->MgmtData.arrayLen < iso2KeyInfoType_MgmtData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[STRING]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2KeyInfoType->MgmtData.array[iso2KeyInfoType->MgmtData.arrayLen].charactersLen);
								if (errn == 0) {
									if (iso2KeyInfoType->MgmtData.array[iso2KeyInfoType->MgmtData.arrayLen].charactersLen >= 2) {
										iso2KeyInfoType->MgmtData.array[iso2KeyInfoType->MgmtData.arrayLen].charactersLen = (uint16_t)(iso2KeyInfoType->MgmtData.array[iso2KeyInfoType->MgmtData.arrayLen].charactersLen - 2); /* string table miss */
										errn = decodeCharacters(stream, iso2KeyInfoType->MgmtData.array[iso2KeyInfoType->MgmtData.arrayLen].charactersLen, iso2KeyInfoType->MgmtData.array[iso2KeyInfoType->MgmtData.arrayLen].characters, iso2KeyInfoType_MgmtData_CHARACTERS_SIZE);
									} else {
										/* string table hit */
										errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
									}
								}
								iso2KeyInfoType->MgmtData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1988;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 7:
					errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					/* TODO unsupported event : START_ELEMENT_GENERIC */
					grammarID = 1988;
					break;
				case 8:
					done = 1;
					grammarID = 4;
					break;
				case 9:
					errn = decodeUnsignedInteger16(stream, &iso2KeyInfoType->ANY.charactersLen);
					if (errn == 0) {
						if (iso2KeyInfoType->ANY.charactersLen >= 2) {
							iso2KeyInfoType->ANY.charactersLen = (uint16_t)(iso2KeyInfoType->ANY.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2KeyInfoType->ANY.charactersLen, iso2KeyInfoType->ANY.characters, iso2KeyInfoType_ANY_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					iso2KeyInfoType->ANY_isUsed = 1u;
					grammarID = 1988;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1989:
			/* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT_GENERIC, CHARACTERS_GENERIC[STRING]] */
			errn = decodeNBitUnsignedInteger(stream, 4, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2KeyInfoType->KeyName.arrayLen < iso2KeyInfoType_KeyName_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[STRING]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2KeyInfoType->KeyName.array[iso2KeyInfoType->KeyName.arrayLen].charactersLen);
								if (errn == 0) {
									if (iso2KeyInfoType->KeyName.array[iso2KeyInfoType->KeyName.arrayLen].charactersLen >= 2) {
										iso2KeyInfoType->KeyName.array[iso2KeyInfoType->KeyName.arrayLen].charactersLen = (uint16_t)(iso2KeyInfoType->KeyName.array[iso2KeyInfoType->KeyName.arrayLen].charactersLen - 2); /* string table miss */
										errn = decodeCharacters(stream, iso2KeyInfoType->KeyName.array[iso2KeyInfoType->KeyName.arrayLen].charactersLen, iso2KeyInfoType->KeyName.array[iso2KeyInfoType->KeyName.arrayLen].characters, iso2KeyInfoType_KeyName_CHARACTERS_SIZE);
									} else {
										/* string table hit */
										errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
									}
								}
								iso2KeyInfoType->KeyName.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1988;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					if (iso2KeyInfoType->KeyValue.arrayLen < iso2KeyInfoType_KeyValue_ARRAY_SIZE) {
						errn = decode_iso2KeyValueType(stream, &iso2KeyInfoType->KeyValue.array[iso2KeyInfoType->KeyValue.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1988;
					break;
				case 2:
					if (iso2KeyInfoType->RetrievalMethod.arrayLen < iso2KeyInfoType_RetrievalMethod_ARRAY_SIZE) {
						errn = decode_iso2RetrievalMethodType(stream, &iso2KeyInfoType->RetrievalMethod.array[iso2KeyInfoType->RetrievalMethod.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1988;
					break;
				case 3:
					if (iso2KeyInfoType->X509Data.arrayLen < iso2KeyInfoType_X509Data_ARRAY_SIZE) {
						errn = decode_iso2X509DataType(stream, &iso2KeyInfoType->X509Data.array[iso2KeyInfoType->X509Data.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1988;
					break;
				case 4:
					if (iso2KeyInfoType->PGPData.arrayLen < iso2KeyInfoType_PGPData_ARRAY_SIZE) {
						errn = decode_iso2PGPDataType(stream, &iso2KeyInfoType->PGPData.array[iso2KeyInfoType->PGPData.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1988;
					break;
				case 5:
					if (iso2KeyInfoType->SPKIData.arrayLen < iso2KeyInfoType_SPKIData_ARRAY_SIZE) {
						errn = decode_iso2SPKIDataType(stream, &iso2KeyInfoType->SPKIData.array[iso2KeyInfoType->SPKIData.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1988;
					break;
				case 6:
					if (iso2KeyInfoType->MgmtData.arrayLen < iso2KeyInfoType_MgmtData_ARRAY_SIZE) {
						/* First(xsi:type)StartTag[CHARACTERS[STRING]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2KeyInfoType->MgmtData.array[iso2KeyInfoType->MgmtData.arrayLen].charactersLen);
								if (errn == 0) {
									if (iso2KeyInfoType->MgmtData.array[iso2KeyInfoType->MgmtData.arrayLen].charactersLen >= 2) {
										iso2KeyInfoType->MgmtData.array[iso2KeyInfoType->MgmtData.arrayLen].charactersLen = (uint16_t)(iso2KeyInfoType->MgmtData.array[iso2KeyInfoType->MgmtData.arrayLen].charactersLen - 2); /* string table miss */
										errn = decodeCharacters(stream, iso2KeyInfoType->MgmtData.array[iso2KeyInfoType->MgmtData.arrayLen].charactersLen, iso2KeyInfoType->MgmtData.array[iso2KeyInfoType->MgmtData.arrayLen].characters, iso2KeyInfoType_MgmtData_CHARACTERS_SIZE);
									} else {
										/* string table hit */
										errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
									}
								}
								iso2KeyInfoType->MgmtData.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1988;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 7:
					errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					/* TODO unsupported event : START_ELEMENT_GENERIC */
					grammarID = 1988;
					break;
				case 8:
					errn = decodeUnsignedInteger16(stream, &iso2KeyInfoType->ANY.charactersLen);
					if (errn == 0) {
						if (iso2KeyInfoType->ANY.charactersLen >= 2) {
							iso2KeyInfoType->ANY.charactersLen = (uint16_t)(iso2KeyInfoType->ANY.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2KeyInfoType->ANY.charactersLen, iso2KeyInfoType->ANY.characters, iso2KeyInfoType_ANY_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					iso2KeyInfoType->ANY_isUsed = 1u;
					grammarID = 1989;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,SubCertificatesType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgDataTypes":Certificate{1-4})',  derivedBy='RESTRICTION'.  */
static int decode_iso2SubCertificatesType(bitstream_t* stream, struct iso2SubCertificatesType* iso2SubCertificatesType) {
	int grammarID = 1990;
	int done = 0;
	
	init_iso2SubCertificatesType(iso2SubCertificatesType);
	
	while(!done) {
		switch(grammarID) {
		case 1990:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Certificate)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SubCertificatesType->Certificate.arrayLen < iso2SubCertificatesType_Certificate_ARRAY_SIZE) {
						/* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2SubCertificatesType->Certificate.array[iso2SubCertificatesType->Certificate.arrayLen].bytesLen);
								if (errn == 0) {
									errn =  (iso2SubCertificatesType->Certificate.array[iso2SubCertificatesType->Certificate.arrayLen].bytesLen) <= iso2SubCertificatesType_Certificate_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
								}
								if (errn == 0) {
									errn = decodeBytes(stream, iso2SubCertificatesType->Certificate.array[iso2SubCertificatesType->Certificate.arrayLen].bytesLen, iso2SubCertificatesType->Certificate.array[iso2SubCertificatesType->Certificate.arrayLen].bytes);
								}
								iso2SubCertificatesType->Certificate.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Certificate) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1991;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1991:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Certificate), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SubCertificatesType->Certificate.arrayLen < iso2SubCertificatesType_Certificate_ARRAY_SIZE) {
						/* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2SubCertificatesType->Certificate.array[iso2SubCertificatesType->Certificate.arrayLen].bytesLen);
								if (errn == 0) {
									errn =  (iso2SubCertificatesType->Certificate.array[iso2SubCertificatesType->Certificate.arrayLen].bytesLen) <= iso2SubCertificatesType_Certificate_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
								}
								if (errn == 0) {
									errn = decodeBytes(stream, iso2SubCertificatesType->Certificate.array[iso2SubCertificatesType->Certificate.arrayLen].bytesLen, iso2SubCertificatesType->Certificate.array[iso2SubCertificatesType->Certificate.arrayLen].bytes);
								}
								iso2SubCertificatesType->Certificate.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Certificate) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1992;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1992:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Certificate), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SubCertificatesType->Certificate.arrayLen < iso2SubCertificatesType_Certificate_ARRAY_SIZE) {
						/* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2SubCertificatesType->Certificate.array[iso2SubCertificatesType->Certificate.arrayLen].bytesLen);
								if (errn == 0) {
									errn =  (iso2SubCertificatesType->Certificate.array[iso2SubCertificatesType->Certificate.arrayLen].bytesLen) <= iso2SubCertificatesType_Certificate_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
								}
								if (errn == 0) {
									errn = decodeBytes(stream, iso2SubCertificatesType->Certificate.array[iso2SubCertificatesType->Certificate.arrayLen].bytesLen, iso2SubCertificatesType->Certificate.array[iso2SubCertificatesType->Certificate.arrayLen].bytes);
								}
								iso2SubCertificatesType->Certificate.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Certificate) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1993;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1993:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Certificate), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SubCertificatesType->Certificate.arrayLen < iso2SubCertificatesType_Certificate_ARRAY_SIZE) {
						/* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2SubCertificatesType->Certificate.array[iso2SubCertificatesType->Certificate.arrayLen].bytesLen);
								if (errn == 0) {
									errn =  (iso2SubCertificatesType->Certificate.array[iso2SubCertificatesType->Certificate.arrayLen].bytesLen) <= iso2SubCertificatesType_Certificate_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
								}
								if (errn == 0) {
									errn = decodeBytes(stream, iso2SubCertificatesType->Certificate.array[iso2SubCertificatesType->Certificate.arrayLen].bytesLen, iso2SubCertificatesType->Certificate.array[iso2SubCertificatesType->Certificate.arrayLen].bytes);
								}
								iso2SubCertificatesType->Certificate.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Certificate) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,ListOfRootCertificateIDsType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgDataTypes":RootCertificateID{1-20})',  derivedBy='RESTRICTION'.  */
static int decode_iso2ListOfRootCertificateIDsType(bitstream_t* stream, struct iso2ListOfRootCertificateIDsType* iso2ListOfRootCertificateIDsType) {
	int grammarID = 1994;
	int done = 0;
	
	init_iso2ListOfRootCertificateIDsType(iso2ListOfRootCertificateIDsType);
	
	while(!done) {
		switch(grammarID) {
		case 1994:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RootCertificateID)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ListOfRootCertificateIDsType->RootCertificateID.arrayLen < iso2ListOfRootCertificateIDsType_RootCertificateID_ARRAY_SIZE) {
						errn = decode_iso2X509IssuerSerialType(stream, &iso2ListOfRootCertificateIDsType->RootCertificateID.array[iso2ListOfRootCertificateIDsType->RootCertificateID.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1995;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1995:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RootCertificateID), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ListOfRootCertificateIDsType->RootCertificateID.arrayLen < iso2ListOfRootCertificateIDsType_RootCertificateID_ARRAY_SIZE) {
						errn = decode_iso2X509IssuerSerialType(stream, &iso2ListOfRootCertificateIDsType->RootCertificateID.array[iso2ListOfRootCertificateIDsType->RootCertificateID.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1996;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1996:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RootCertificateID), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ListOfRootCertificateIDsType->RootCertificateID.arrayLen < iso2ListOfRootCertificateIDsType_RootCertificateID_ARRAY_SIZE) {
						errn = decode_iso2X509IssuerSerialType(stream, &iso2ListOfRootCertificateIDsType->RootCertificateID.array[iso2ListOfRootCertificateIDsType->RootCertificateID.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1997;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1997:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RootCertificateID), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ListOfRootCertificateIDsType->RootCertificateID.arrayLen < iso2ListOfRootCertificateIDsType_RootCertificateID_ARRAY_SIZE) {
						errn = decode_iso2X509IssuerSerialType(stream, &iso2ListOfRootCertificateIDsType->RootCertificateID.array[iso2ListOfRootCertificateIDsType->RootCertificateID.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1998;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1998:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RootCertificateID), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ListOfRootCertificateIDsType->RootCertificateID.arrayLen < iso2ListOfRootCertificateIDsType_RootCertificateID_ARRAY_SIZE) {
						errn = decode_iso2X509IssuerSerialType(stream, &iso2ListOfRootCertificateIDsType->RootCertificateID.array[iso2ListOfRootCertificateIDsType->RootCertificateID.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1999;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1999:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RootCertificateID), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ListOfRootCertificateIDsType->RootCertificateID.arrayLen < iso2ListOfRootCertificateIDsType_RootCertificateID_ARRAY_SIZE) {
						errn = decode_iso2X509IssuerSerialType(stream, &iso2ListOfRootCertificateIDsType->RootCertificateID.array[iso2ListOfRootCertificateIDsType->RootCertificateID.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2000;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2000:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RootCertificateID), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ListOfRootCertificateIDsType->RootCertificateID.arrayLen < iso2ListOfRootCertificateIDsType_RootCertificateID_ARRAY_SIZE) {
						errn = decode_iso2X509IssuerSerialType(stream, &iso2ListOfRootCertificateIDsType->RootCertificateID.array[iso2ListOfRootCertificateIDsType->RootCertificateID.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2001;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2001:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RootCertificateID), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ListOfRootCertificateIDsType->RootCertificateID.arrayLen < iso2ListOfRootCertificateIDsType_RootCertificateID_ARRAY_SIZE) {
						errn = decode_iso2X509IssuerSerialType(stream, &iso2ListOfRootCertificateIDsType->RootCertificateID.array[iso2ListOfRootCertificateIDsType->RootCertificateID.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2002;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2002:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RootCertificateID), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ListOfRootCertificateIDsType->RootCertificateID.arrayLen < iso2ListOfRootCertificateIDsType_RootCertificateID_ARRAY_SIZE) {
						errn = decode_iso2X509IssuerSerialType(stream, &iso2ListOfRootCertificateIDsType->RootCertificateID.array[iso2ListOfRootCertificateIDsType->RootCertificateID.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2003;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2003:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RootCertificateID), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ListOfRootCertificateIDsType->RootCertificateID.arrayLen < iso2ListOfRootCertificateIDsType_RootCertificateID_ARRAY_SIZE) {
						errn = decode_iso2X509IssuerSerialType(stream, &iso2ListOfRootCertificateIDsType->RootCertificateID.array[iso2ListOfRootCertificateIDsType->RootCertificateID.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2004;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2004:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RootCertificateID), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ListOfRootCertificateIDsType->RootCertificateID.arrayLen < iso2ListOfRootCertificateIDsType_RootCertificateID_ARRAY_SIZE) {
						errn = decode_iso2X509IssuerSerialType(stream, &iso2ListOfRootCertificateIDsType->RootCertificateID.array[iso2ListOfRootCertificateIDsType->RootCertificateID.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2005;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2005:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RootCertificateID), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ListOfRootCertificateIDsType->RootCertificateID.arrayLen < iso2ListOfRootCertificateIDsType_RootCertificateID_ARRAY_SIZE) {
						errn = decode_iso2X509IssuerSerialType(stream, &iso2ListOfRootCertificateIDsType->RootCertificateID.array[iso2ListOfRootCertificateIDsType->RootCertificateID.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2006;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2006:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RootCertificateID), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ListOfRootCertificateIDsType->RootCertificateID.arrayLen < iso2ListOfRootCertificateIDsType_RootCertificateID_ARRAY_SIZE) {
						errn = decode_iso2X509IssuerSerialType(stream, &iso2ListOfRootCertificateIDsType->RootCertificateID.array[iso2ListOfRootCertificateIDsType->RootCertificateID.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2007;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2007:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RootCertificateID), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ListOfRootCertificateIDsType->RootCertificateID.arrayLen < iso2ListOfRootCertificateIDsType_RootCertificateID_ARRAY_SIZE) {
						errn = decode_iso2X509IssuerSerialType(stream, &iso2ListOfRootCertificateIDsType->RootCertificateID.array[iso2ListOfRootCertificateIDsType->RootCertificateID.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2008;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2008:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RootCertificateID), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ListOfRootCertificateIDsType->RootCertificateID.arrayLen < iso2ListOfRootCertificateIDsType_RootCertificateID_ARRAY_SIZE) {
						errn = decode_iso2X509IssuerSerialType(stream, &iso2ListOfRootCertificateIDsType->RootCertificateID.array[iso2ListOfRootCertificateIDsType->RootCertificateID.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2009;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2009:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RootCertificateID), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ListOfRootCertificateIDsType->RootCertificateID.arrayLen < iso2ListOfRootCertificateIDsType_RootCertificateID_ARRAY_SIZE) {
						errn = decode_iso2X509IssuerSerialType(stream, &iso2ListOfRootCertificateIDsType->RootCertificateID.array[iso2ListOfRootCertificateIDsType->RootCertificateID.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2010;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2010:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RootCertificateID), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ListOfRootCertificateIDsType->RootCertificateID.arrayLen < iso2ListOfRootCertificateIDsType_RootCertificateID_ARRAY_SIZE) {
						errn = decode_iso2X509IssuerSerialType(stream, &iso2ListOfRootCertificateIDsType->RootCertificateID.array[iso2ListOfRootCertificateIDsType->RootCertificateID.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2011;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2011:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RootCertificateID), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ListOfRootCertificateIDsType->RootCertificateID.arrayLen < iso2ListOfRootCertificateIDsType_RootCertificateID_ARRAY_SIZE) {
						errn = decode_iso2X509IssuerSerialType(stream, &iso2ListOfRootCertificateIDsType->RootCertificateID.array[iso2ListOfRootCertificateIDsType->RootCertificateID.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2012;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2012:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RootCertificateID), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ListOfRootCertificateIDsType->RootCertificateID.arrayLen < iso2ListOfRootCertificateIDsType_RootCertificateID_ARRAY_SIZE) {
						errn = decode_iso2X509IssuerSerialType(stream, &iso2ListOfRootCertificateIDsType->RootCertificateID.array[iso2ListOfRootCertificateIDsType->RootCertificateID.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2013;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2013:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RootCertificateID), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ListOfRootCertificateIDsType->RootCertificateID.arrayLen < iso2ListOfRootCertificateIDsType_RootCertificateID_ARRAY_SIZE) {
						errn = decode_iso2X509IssuerSerialType(stream, &iso2ListOfRootCertificateIDsType->RootCertificateID.array[iso2ListOfRootCertificateIDsType->RootCertificateID.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 3;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,EVEnergyTransferParameterType',  base type name='anyType',  content type='ELEMENT',  isAbstract='true',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgDataTypes":DepartureTime)',  derivedBy='RESTRICTION'.  */
static int decode_iso2EVEnergyTransferParameterType(bitstream_t* stream, struct iso2EVEnergyTransferParameterType* iso2EVEnergyTransferParameterType) {
	int grammarID = 2014;
	int done = 0;
	
	init_iso2EVEnergyTransferParameterType(iso2EVEnergyTransferParameterType);
	
	while(!done) {
		switch(grammarID) {
		case 2014:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}DepartureTime)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger32(stream, &iso2EVEnergyTransferParameterType->DepartureTime);
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}DepartureTime) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,ContractSignatureEncryptedPrivateKeyType',  base type name='encryptedPrivateKeyType',  content type='SIMPLE',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  derivedBy='EXTENSION'.  */
static int decode_iso2ContractSignatureEncryptedPrivateKeyType(bitstream_t* stream, struct iso2ContractSignatureEncryptedPrivateKeyType* iso2ContractSignatureEncryptedPrivateKeyType) {
	int grammarID = 2015;
	int done = 0;
	
	init_iso2ContractSignatureEncryptedPrivateKeyType(iso2ContractSignatureEncryptedPrivateKeyType);
	
	while(!done) {
		switch(grammarID) {
		case 2015:
			/* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2016:MsgDataTypes}Id)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decodeUnsignedInteger16(stream, &iso2ContractSignatureEncryptedPrivateKeyType->Id.charactersLen);
					if (errn == 0) {
						if (iso2ContractSignatureEncryptedPrivateKeyType->Id.charactersLen >= 2) {
							iso2ContractSignatureEncryptedPrivateKeyType->Id.charactersLen = (uint16_t)(iso2ContractSignatureEncryptedPrivateKeyType->Id.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2ContractSignatureEncryptedPrivateKeyType->Id.charactersLen, iso2ContractSignatureEncryptedPrivateKeyType->Id.characters, iso2ContractSignatureEncryptedPrivateKeyType_Id_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					grammarID = 2016;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2016:
			/* StartTag[CHARACTERS[BINARY_BASE64]] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decodeUnsignedInteger16(stream, &iso2ContractSignatureEncryptedPrivateKeyType->CONTENT.bytesLen);
					if (errn == 0) {
						errn =  (iso2ContractSignatureEncryptedPrivateKeyType->CONTENT.bytesLen) <= iso2ContractSignatureEncryptedPrivateKeyType_CONTENT_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
					}
					if (errn == 0) {
						errn = decodeBytes(stream, iso2ContractSignatureEncryptedPrivateKeyType->CONTENT.bytesLen, iso2ContractSignatureEncryptedPrivateKeyType->CONTENT.bytes);
					}
					grammarID = 3;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,MagneticVectorSetupListType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgDataTypes":MagneticVectorSetup{1-255})',  derivedBy='RESTRICTION'.  */
static int decode_iso2MagneticVectorSetupListType(bitstream_t* stream, struct iso2MagneticVectorSetupListType* iso2MagneticVectorSetupListType) {
	int grammarID = 2017;
	int done = 0;
	
	init_iso2MagneticVectorSetupListType(iso2MagneticVectorSetupListType);
	
	while(!done) {
		switch(grammarID) {
		case 2017:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2018;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2018:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2019;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2019:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2020;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2020:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2021;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2021:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2022;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2022:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2023;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2023:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2024;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2024:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2025;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2025:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2026;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2026:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2027;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2027:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2028;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2028:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2029;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2029:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2030;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2030:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2031;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2031:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2032;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2032:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2033;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2033:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2034;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2034:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2035;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2035:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2036;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2036:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2037;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2037:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2038;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2038:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2039;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2039:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2040;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2040:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2041;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2041:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2042;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2042:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2043;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2043:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2044;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2044:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2045;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2045:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2046;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2046:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2047;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2047:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2048;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2048:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2049;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2049:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2050;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2050:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2051;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2051:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2052;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2052:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2053;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2053:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2054;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2054:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2055;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2055:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2056;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2056:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2057;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2057:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2058;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2058:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2059;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2059:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2060;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2060:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2061;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2061:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2062;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2062:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2063;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2063:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2064;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2064:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2065;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2065:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2066;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2066:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2067;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2067:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2068;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2068:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2069;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2069:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2070;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2070:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2071;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2071:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2072;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2072:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2073;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2073:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2074;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2074:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2075;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2075:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2076;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2076:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2077;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2077:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2078;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2078:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2079;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2079:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2080;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2080:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2081;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2081:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2082;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2082:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2083;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2083:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2084;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2084:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2085;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2085:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2086;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2086:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2087;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2087:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2088;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2088:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2089;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2089:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2090;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2090:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2091;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2091:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2092;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2092:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2093;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2093:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2094;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2094:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2095;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2095:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2096;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2096:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2097;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2097:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2098;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2098:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2099;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2099:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2100;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2100:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2101;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2101:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2102;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2102:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2103;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2103:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2104;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2104:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2105;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2105:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2106;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2106:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2107;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2107:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2108;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2108:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2109;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2109:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2110;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2110:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2111;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2111:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2112;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2112:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2113;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2113:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2114;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2114:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2115;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2115:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2116;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2116:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2117;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2117:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2118;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2118:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2119;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2119:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2120;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2120:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2121;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2121:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2122;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2122:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2123;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2123:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2124;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2124:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2125;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2125:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2126;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2126:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2127;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2127:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2128;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2128:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2129;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2129:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2130;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2130:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2131;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2131:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2132;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2132:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2133;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2133:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2134;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2134:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2135;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2135:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2136;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2136:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2137;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2137:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2138;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2138:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2139;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2139:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2140;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2140:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2141;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2141:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2142;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2142:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2143;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2143:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2144;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2144:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2145;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2145:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2146;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2146:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2147;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2147:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2148;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2148:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2149;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2149:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2150;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2150:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2151;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2151:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2152;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2152:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2153;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2153:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2154;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2154:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2155;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2155:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2156;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2156:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2157;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2157:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2158;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2158:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2159;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2159:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2160;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2160:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2161;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2161:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2162;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2162:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2163;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2163:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2164;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2164:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2165;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2165:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2166;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2166:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2167;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2167:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2168;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2168:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2169;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2169:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2170;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2170:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2171;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2171:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2172;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2172:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2173;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2173:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2174;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2174:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2175;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2175:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2176;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2176:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2177;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2177:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2178;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2178:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2179;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2179:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2180;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2180:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2181;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2181:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2182;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2182:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2183;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2183:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2184;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2184:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2185;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2185:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2186;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2186:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2187;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2187:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2188;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2188:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2189;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2189:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2190;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2190:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2191;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2191:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2192;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2192:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2193;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2193:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2194;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2194:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2195;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2195:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2196;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2196:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2197;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2197:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2198;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2198:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2199;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2199:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2200;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2200:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2201;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2201:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2202;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2202:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2203;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2203:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2204;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2204:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2205;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2205:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2206;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2206:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2207;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2207:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2208;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2208:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2209;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2209:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2210;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2210:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2211;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2211:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2212;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2212:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2213;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2213:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2214;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2214:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2215;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2215:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2216;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2216:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2217;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2217:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2218;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2218:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2219;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2219:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2220;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2220:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2221;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2221:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2222;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2222:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2223;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2223:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2224;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2224:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2225;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2225:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2226;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2226:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2227;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2227:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2228;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2228:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2229;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2229:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2230;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2230:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2231;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2231:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2232;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2232:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2233;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2233:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2234;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2234:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2235;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2235:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2236;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2236:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2237;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2237:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2238;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2238:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2239;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2239:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2240;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2240:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2241;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2241:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2242;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2242:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2243;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2243:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2244;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2244:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2245;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2245:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2246;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2246:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2247;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2247:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2248;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2248:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2249;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2249:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2250;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2250:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2251;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2251:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2252;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2252:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2253;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2253:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2254;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2254:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2255;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2255:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2256;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2256:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2257;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2257:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2258;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2258:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2259;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2259:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2260;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2260:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2261;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2261:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2262;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2262:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2263;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2263:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2264;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2264:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2265;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2265:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2266;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2266:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2267;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2267:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2268;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2268:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2269;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2269:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2270;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2270:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2271;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2271:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen < iso2MagneticVectorSetupListType_MagneticVectorSetup_ARRAY_SIZE) {
						errn = decode_iso2MagneticVectorSetupType(stream, &iso2MagneticVectorSetupListType->MagneticVectorSetup.array[iso2MagneticVectorSetupListType->MagneticVectorSetup.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 3;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,PairingReqType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgBody":EVProcessing,"urn:iso:15118:2:2016:MsgBody":PairingParameters{0-1})',  derivedBy='EXTENSION'.  */
static int decode_iso2PairingReqType(bitstream_t* stream, struct iso2PairingReqType* iso2PairingReqType) {
	int grammarID = 2272;
	int done = 0;
	
	init_iso2PairingReqType(iso2PairingReqType);
	
	while(!done) {
		switch(grammarID) {
		case 2272:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVProcessing)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
							iso2PairingReqType->EVProcessing = (iso2EVSEProcessingType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVProcessing) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1827;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1827:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PairingParameters), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2ParameterSetType(stream, &iso2PairingReqType->PairingParameters);
					iso2PairingReqType->PairingParameters_isUsed = 1u;
					grammarID = 3;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,CurrentDemandResType',  base type name='V2GResponseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(("urn:iso:15118:2:2016:MsgBody":ResponseCode,"urn:iso:15118:2:2016:MsgBody":EVSEStatus{0-1}),("urn:iso:15118:2:2016:MsgBody":EVSEPresentCurrent,"urn:iso:15118:2:2016:MsgBody":EVSEPresentVoltage,"urn:iso:15118:2:2016:MsgBody":EVSEPowerLimitAchieved,"urn:iso:15118:2:2016:MsgBody":EVSECurrentLimitAchieved,"urn:iso:15118:2:2016:MsgBody":EVSEVoltageLimitAchieved,"urn:iso:15118:2:2016:MsgBody":EVSEMaximumPower{0-1},"urn:iso:15118:2:2016:MsgBody":EVSEMaximumCurrent{0-1},"urn:iso:15118:2:2016:MsgBody":EVSEMaximumVoltage{0-1},"urn:iso:15118:2:2016:MsgBody":EVSEID,"urn:iso:15118:2:2016:MsgBody":SAScheduleTupleID{0-1},"urn:iso:15118:2:2016:MsgBody":MeterInfo{0-1},"urn:iso:15118:2:2016:MsgBody":ReceiptRequired{0-1}))',  derivedBy='EXTENSION'.  */
static int decode_iso2CurrentDemandResType(bitstream_t* stream, struct iso2CurrentDemandResType* iso2CurrentDemandResType) {
	int grammarID = 2273;
	int done = 0;
	
	init_iso2CurrentDemandResType(iso2CurrentDemandResType);
	
	while(!done) {
		switch(grammarID) {
		case 2273:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 5, &uint32);
							iso2CurrentDemandResType->ResponseCode = (iso2responseCodeType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 2274;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2274:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEPresentCurrent)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2EVSEStatusType(stream, &iso2CurrentDemandResType->EVSEStatus);
					iso2CurrentDemandResType->EVSEStatus_isUsed = 1u;
					grammarID = 2275;
					break;
				case 1:
					errn = decode_iso2PhysicalValueType(stream, &iso2CurrentDemandResType->EVSEPresentCurrent);
					grammarID = 2276;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2275:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEPresentCurrent)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2CurrentDemandResType->EVSEPresentCurrent);
					grammarID = 2276;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2276:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEPresentVoltage)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2CurrentDemandResType->EVSEPresentVoltage);
					grammarID = 2277;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2277:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEPowerLimitAchieved)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[BOOLEAN]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeBoolean(stream, &iso2CurrentDemandResType->EVSEPowerLimitAchieved);
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEPowerLimitAchieved) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 2278;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2278:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSECurrentLimitAchieved)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[BOOLEAN]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeBoolean(stream, &iso2CurrentDemandResType->EVSECurrentLimitAchieved);
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSECurrentLimitAchieved) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 2279;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2279:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEVoltageLimitAchieved)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[BOOLEAN]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeBoolean(stream, &iso2CurrentDemandResType->EVSEVoltageLimitAchieved);
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEVoltageLimitAchieved) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 2280;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2280:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEMaximumPower), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEMaximumCurrent), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEMaximumVoltage), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEID)] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2CurrentDemandResType->EVSEMaximumPower);
					iso2CurrentDemandResType->EVSEMaximumPower_isUsed = 1u;
					grammarID = 2281;
					break;
				case 1:
					errn = decode_iso2PhysicalValueType(stream, &iso2CurrentDemandResType->EVSEMaximumCurrent);
					iso2CurrentDemandResType->EVSEMaximumCurrent_isUsed = 1u;
					grammarID = 2282;
					break;
				case 2:
					errn = decode_iso2PhysicalValueType(stream, &iso2CurrentDemandResType->EVSEMaximumVoltage);
					iso2CurrentDemandResType->EVSEMaximumVoltage_isUsed = 1u;
					grammarID = 27;
					break;
				case 3:
					/* FirstStartTag[CHARACTERS[STRING]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2CurrentDemandResType->EVSEID.charactersLen);
							if (errn == 0) {
								if (iso2CurrentDemandResType->EVSEID.charactersLen >= 2) {
									iso2CurrentDemandResType->EVSEID.charactersLen = (uint16_t)(iso2CurrentDemandResType->EVSEID.charactersLen - 2); /* string table miss */
									errn = decodeCharacters(stream, iso2CurrentDemandResType->EVSEID.charactersLen, iso2CurrentDemandResType->EVSEID.characters, iso2CurrentDemandResType_EVSEID_CHARACTERS_SIZE);
								} else {
									/* string table hit */
									errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
								}
							}
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEID) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 28;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2281:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEMaximumCurrent), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEMaximumVoltage), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEID)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2CurrentDemandResType->EVSEMaximumCurrent);
					iso2CurrentDemandResType->EVSEMaximumCurrent_isUsed = 1u;
					grammarID = 2282;
					break;
				case 1:
					errn = decode_iso2PhysicalValueType(stream, &iso2CurrentDemandResType->EVSEMaximumVoltage);
					iso2CurrentDemandResType->EVSEMaximumVoltage_isUsed = 1u;
					grammarID = 27;
					break;
				case 2:
					/* FirstStartTag[CHARACTERS[STRING]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2CurrentDemandResType->EVSEID.charactersLen);
							if (errn == 0) {
								if (iso2CurrentDemandResType->EVSEID.charactersLen >= 2) {
									iso2CurrentDemandResType->EVSEID.charactersLen = (uint16_t)(iso2CurrentDemandResType->EVSEID.charactersLen - 2); /* string table miss */
									errn = decodeCharacters(stream, iso2CurrentDemandResType->EVSEID.charactersLen, iso2CurrentDemandResType->EVSEID.characters, iso2CurrentDemandResType_EVSEID_CHARACTERS_SIZE);
								} else {
									/* string table hit */
									errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
								}
							}
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEID) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 28;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2282:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEMaximumVoltage), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEID)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2CurrentDemandResType->EVSEMaximumVoltage);
					iso2CurrentDemandResType->EVSEMaximumVoltage_isUsed = 1u;
					grammarID = 27;
					break;
				case 1:
					/* FirstStartTag[CHARACTERS[STRING]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2CurrentDemandResType->EVSEID.charactersLen);
							if (errn == 0) {
								if (iso2CurrentDemandResType->EVSEID.charactersLen >= 2) {
									iso2CurrentDemandResType->EVSEID.charactersLen = (uint16_t)(iso2CurrentDemandResType->EVSEID.charactersLen - 2); /* string table miss */
									errn = decodeCharacters(stream, iso2CurrentDemandResType->EVSEID.charactersLen, iso2CurrentDemandResType->EVSEID.characters, iso2CurrentDemandResType_EVSEID_CHARACTERS_SIZE);
								} else {
									/* string table hit */
									errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
								}
							}
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEID) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 28;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 27:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEID)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[STRING]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2CurrentDemandResType->EVSEID.charactersLen);
							if (errn == 0) {
								if (iso2CurrentDemandResType->EVSEID.charactersLen >= 2) {
									iso2CurrentDemandResType->EVSEID.charactersLen = (uint16_t)(iso2CurrentDemandResType->EVSEID.charactersLen - 2); /* string table miss */
									errn = decodeCharacters(stream, iso2CurrentDemandResType->EVSEID.charactersLen, iso2CurrentDemandResType->EVSEID.characters, iso2CurrentDemandResType_EVSEID_CHARACTERS_SIZE);
								} else {
									/* string table hit */
									errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
								}
							}
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEID) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 28;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 28:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ReceiptRequired), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
							iso2CurrentDemandResType->SAScheduleTupleID = (uint8_t)(uint32 + 1);
							iso2CurrentDemandResType->SAScheduleTupleID_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SAScheduleTupleID) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 29;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					errn = decode_iso2MeterInfoType(stream, &iso2CurrentDemandResType->MeterInfo);
					iso2CurrentDemandResType->MeterInfo_isUsed = 1u;
					grammarID = 30;
					break;
				case 2:
					/* FirstStartTag[CHARACTERS[BOOLEAN]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeBoolean(stream, &iso2CurrentDemandResType->ReceiptRequired);
							iso2CurrentDemandResType->ReceiptRequired_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ReceiptRequired) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 3:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 29:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ReceiptRequired), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2MeterInfoType(stream, &iso2CurrentDemandResType->MeterInfo);
					iso2CurrentDemandResType->MeterInfo_isUsed = 1u;
					grammarID = 30;
					break;
				case 1:
					/* FirstStartTag[CHARACTERS[BOOLEAN]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeBoolean(stream, &iso2CurrentDemandResType->ReceiptRequired);
							iso2CurrentDemandResType->ReceiptRequired_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ReceiptRequired) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 2:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 30:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ReceiptRequired), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[BOOLEAN]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeBoolean(stream, &iso2CurrentDemandResType->ReceiptRequired);
							iso2CurrentDemandResType->ReceiptRequired_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ReceiptRequired) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='http://www.w3.org/2000/09/xmldsig#,X509IssuerSerialType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("http://www.w3.org/2000/09/xmldsig#":X509IssuerName,"http://www.w3.org/2000/09/xmldsig#":X509SerialNumber)',  derivedBy='RESTRICTION'.  */
static int decode_iso2X509IssuerSerialType(bitstream_t* stream, struct iso2X509IssuerSerialType* iso2X509IssuerSerialType) {
	int grammarID = 2283;
	int done = 0;
	
	init_iso2X509IssuerSerialType(iso2X509IssuerSerialType);
	
	while(!done) {
		switch(grammarID) {
		case 2283:
			/* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerName)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* First(xsi:type)StartTag[CHARACTERS[STRING]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2X509IssuerSerialType->X509IssuerName.charactersLen);
							if (errn == 0) {
								if (iso2X509IssuerSerialType->X509IssuerName.charactersLen >= 2) {
									iso2X509IssuerSerialType->X509IssuerName.charactersLen = (uint16_t)(iso2X509IssuerSerialType->X509IssuerName.charactersLen - 2); /* string table miss */
									errn = decodeCharacters(stream, iso2X509IssuerSerialType->X509IssuerName.charactersLen, iso2X509IssuerSerialType->X509IssuerName.characters, iso2X509IssuerSerialType_X509IssuerName_CHARACTERS_SIZE);
								} else {
									/* string table hit */
									errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
								}
							}
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerName) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 2284;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2284:
			/* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SerialNumber)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeInteger64(stream, &iso2X509IssuerSerialType->X509SerialNumber);
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SerialNumber) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,ChargingStatusReqType',  base type name='ChargeLoopReqType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(("urn:iso:15118:2:2016:MsgBody":EVTargetEnergyRequest,"urn:iso:15118:2:2016:MsgBody":EVMaximumEnergyRequest{0-1},"urn:iso:15118:2:2016:MsgBody":EVMinimumEnergyRequest{0-1},"urn:iso:15118:2:2016:MsgBody":DisplayParameters{0-1}),("urn:iso:15118:2:2016:MsgBody":EVMaximumChargePower{0-1},"urn:iso:15118:2:2016:MsgBody":EVMaximumChargeCurrent{0-1},"urn:iso:15118:2:2016:MsgBody":EVMinimumChargeCurrent{0-1}))',  derivedBy='EXTENSION'.  */
static int decode_iso2ChargingStatusReqType(bitstream_t* stream, struct iso2ChargingStatusReqType* iso2ChargingStatusReqType) {
	int grammarID = 2285;
	int done = 0;
	
	init_iso2ChargingStatusReqType(iso2ChargingStatusReqType);
	
	while(!done) {
		switch(grammarID) {
		case 2285:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVTargetEnergyRequest)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2ChargingStatusReqType->EVTargetEnergyRequest);
					grammarID = 2286;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2286:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMaximumEnergyRequest), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMinimumEnergyRequest), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}DisplayParameters), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMaximumChargePower), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMaximumChargeCurrent), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMinimumChargeCurrent), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2ChargingStatusReqType->EVMaximumEnergyRequest);
					iso2ChargingStatusReqType->EVMaximumEnergyRequest_isUsed = 1u;
					grammarID = 2287;
					break;
				case 1:
					errn = decode_iso2PhysicalValueType(stream, &iso2ChargingStatusReqType->EVMinimumEnergyRequest);
					iso2ChargingStatusReqType->EVMinimumEnergyRequest_isUsed = 1u;
					grammarID = 2288;
					break;
				case 2:
					errn = decode_iso2DisplayParametersType(stream, &iso2ChargingStatusReqType->DisplayParameters);
					iso2ChargingStatusReqType->DisplayParameters_isUsed = 1u;
					grammarID = 2289;
					break;
				case 3:
					errn = decode_iso2PhysicalValueType(stream, &iso2ChargingStatusReqType->EVMaximumChargePower);
					iso2ChargingStatusReqType->EVMaximumChargePower_isUsed = 1u;
					grammarID = 2290;
					break;
				case 4:
					errn = decode_iso2PhysicalValueType(stream, &iso2ChargingStatusReqType->EVMaximumChargeCurrent);
					iso2ChargingStatusReqType->EVMaximumChargeCurrent_isUsed = 1u;
					grammarID = 2291;
					break;
				case 5:
					errn = decode_iso2PhysicalValueType(stream, &iso2ChargingStatusReqType->EVMinimumChargeCurrent);
					iso2ChargingStatusReqType->EVMinimumChargeCurrent_isUsed = 1u;
					grammarID = 3;
					break;
				case 6:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2287:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMinimumEnergyRequest), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}DisplayParameters), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMaximumChargePower), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMaximumChargeCurrent), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMinimumChargeCurrent), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2ChargingStatusReqType->EVMinimumEnergyRequest);
					iso2ChargingStatusReqType->EVMinimumEnergyRequest_isUsed = 1u;
					grammarID = 2288;
					break;
				case 1:
					errn = decode_iso2DisplayParametersType(stream, &iso2ChargingStatusReqType->DisplayParameters);
					iso2ChargingStatusReqType->DisplayParameters_isUsed = 1u;
					grammarID = 2289;
					break;
				case 2:
					errn = decode_iso2PhysicalValueType(stream, &iso2ChargingStatusReqType->EVMaximumChargePower);
					iso2ChargingStatusReqType->EVMaximumChargePower_isUsed = 1u;
					grammarID = 2290;
					break;
				case 3:
					errn = decode_iso2PhysicalValueType(stream, &iso2ChargingStatusReqType->EVMaximumChargeCurrent);
					iso2ChargingStatusReqType->EVMaximumChargeCurrent_isUsed = 1u;
					grammarID = 2291;
					break;
				case 4:
					errn = decode_iso2PhysicalValueType(stream, &iso2ChargingStatusReqType->EVMinimumChargeCurrent);
					iso2ChargingStatusReqType->EVMinimumChargeCurrent_isUsed = 1u;
					grammarID = 3;
					break;
				case 5:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2288:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}DisplayParameters), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMaximumChargePower), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMaximumChargeCurrent), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMinimumChargeCurrent), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2DisplayParametersType(stream, &iso2ChargingStatusReqType->DisplayParameters);
					iso2ChargingStatusReqType->DisplayParameters_isUsed = 1u;
					grammarID = 2289;
					break;
				case 1:
					errn = decode_iso2PhysicalValueType(stream, &iso2ChargingStatusReqType->EVMaximumChargePower);
					iso2ChargingStatusReqType->EVMaximumChargePower_isUsed = 1u;
					grammarID = 2290;
					break;
				case 2:
					errn = decode_iso2PhysicalValueType(stream, &iso2ChargingStatusReqType->EVMaximumChargeCurrent);
					iso2ChargingStatusReqType->EVMaximumChargeCurrent_isUsed = 1u;
					grammarID = 2291;
					break;
				case 3:
					errn = decode_iso2PhysicalValueType(stream, &iso2ChargingStatusReqType->EVMinimumChargeCurrent);
					iso2ChargingStatusReqType->EVMinimumChargeCurrent_isUsed = 1u;
					grammarID = 3;
					break;
				case 4:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2289:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMaximumChargePower), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMaximumChargeCurrent), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMinimumChargeCurrent), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2ChargingStatusReqType->EVMaximumChargePower);
					iso2ChargingStatusReqType->EVMaximumChargePower_isUsed = 1u;
					grammarID = 2290;
					break;
				case 1:
					errn = decode_iso2PhysicalValueType(stream, &iso2ChargingStatusReqType->EVMaximumChargeCurrent);
					iso2ChargingStatusReqType->EVMaximumChargeCurrent_isUsed = 1u;
					grammarID = 2291;
					break;
				case 2:
					errn = decode_iso2PhysicalValueType(stream, &iso2ChargingStatusReqType->EVMinimumChargeCurrent);
					iso2ChargingStatusReqType->EVMinimumChargeCurrent_isUsed = 1u;
					grammarID = 3;
					break;
				case 3:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2290:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMaximumChargeCurrent), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMinimumChargeCurrent), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2ChargingStatusReqType->EVMaximumChargeCurrent);
					iso2ChargingStatusReqType->EVMaximumChargeCurrent_isUsed = 1u;
					grammarID = 2291;
					break;
				case 1:
					errn = decode_iso2PhysicalValueType(stream, &iso2ChargingStatusReqType->EVMinimumChargeCurrent);
					iso2ChargingStatusReqType->EVMinimumChargeCurrent_isUsed = 1u;
					grammarID = 3;
					break;
				case 2:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2291:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMinimumChargeCurrent), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2ChargingStatusReqType->EVMinimumChargeCurrent);
					iso2ChargingStatusReqType->EVMinimumChargeCurrent_isUsed = 1u;
					grammarID = 3;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,CertificateInstallationResType',  base type name='V2GResponseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(("urn:iso:15118:2:2016:MsgBody":ResponseCode,"urn:iso:15118:2:2016:MsgBody":EVSEStatus{0-1}),("urn:iso:15118:2:2016:MsgBody":SAProvisioningCertificateChain,"urn:iso:15118:2:2016:MsgBody":ContractSignatureCertChain,"urn:iso:15118:2:2016:MsgBody":ContractSignatureEncryptedPrivateKey,"urn:iso:15118:2:2016:MsgBody":DHpublickey,"urn:iso:15118:2:2016:MsgBody":eMAID))',  derivedBy='EXTENSION'.  */
static int decode_iso2CertificateInstallationResType(bitstream_t* stream, struct iso2CertificateInstallationResType* iso2CertificateInstallationResType) {
	int grammarID = 2292;
	int done = 0;
	
	init_iso2CertificateInstallationResType(iso2CertificateInstallationResType);
	
	while(!done) {
		switch(grammarID) {
		case 2292:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 5, &uint32);
							iso2CertificateInstallationResType->ResponseCode = (iso2responseCodeType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 2293;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2293:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SAProvisioningCertificateChain)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2EVSEStatusType(stream, &iso2CertificateInstallationResType->EVSEStatus);
					iso2CertificateInstallationResType->EVSEStatus_isUsed = 1u;
					grammarID = 2294;
					break;
				case 1:
					errn = decode_iso2CertificateChainType(stream, &iso2CertificateInstallationResType->SAProvisioningCertificateChain);
					grammarID = 2295;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2294:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SAProvisioningCertificateChain)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2CertificateChainType(stream, &iso2CertificateInstallationResType->SAProvisioningCertificateChain);
					grammarID = 2295;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2295:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ContractSignatureCertChain)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2CertificateChainType(stream, &iso2CertificateInstallationResType->ContractSignatureCertChain);
					grammarID = 2296;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2296:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ContractSignatureEncryptedPrivateKey)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2ContractSignatureEncryptedPrivateKeyType(stream, &iso2CertificateInstallationResType->ContractSignatureEncryptedPrivateKey);
					grammarID = 2297;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2297:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}DHpublickey)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2DiffieHellmanPublickeyType(stream, &iso2CertificateInstallationResType->DHpublickey);
					grammarID = 2298;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2298:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}eMAID)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2EMAIDType(stream, &iso2CertificateInstallationResType->eMAID);
					grammarID = 3;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,SensorPackageType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgDataTypes":PackageIndex,"urn:iso:15118:2:2016:MsgDataTypes":SensorMeasurements{1-255})',  derivedBy='RESTRICTION'.  */
static int decode_iso2SensorPackageType(bitstream_t* stream, struct iso2SensorPackageType* iso2SensorPackageType) {
	int grammarID = 2299;
	int done = 0;
	
	init_iso2SensorPackageType(iso2SensorPackageType);
	
	while(!done) {
		switch(grammarID) {
		case 2299:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}PackageIndex)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger32(stream, &iso2SensorPackageType->PackageIndex);
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}PackageIndex) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 2300;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2300:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2301;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2301:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2302;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2302:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2303;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2303:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2304;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2304:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2305;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2305:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2306;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2306:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2307;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2307:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2308;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2308:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2309;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2309:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2310;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2310:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2311;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2311:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2312;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2312:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2313;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2313:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2314;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2314:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2315;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2315:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2316;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2316:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2317;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2317:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2318;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2318:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2319;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2319:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2320;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2320:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2321;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2321:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2322;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2322:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2323;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2323:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2324;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2324:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2325;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2325:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2326;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2326:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2327;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2327:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2328;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2328:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2329;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2329:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2330;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2330:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2331;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2331:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2332;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2332:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2333;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2333:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2334;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2334:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2335;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2335:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2336;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2336:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2337;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2337:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2338;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2338:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2339;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2339:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2340;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2340:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2341;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2341:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2342;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2342:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2343;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2343:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2344;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2344:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2345;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2345:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2346;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2346:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2347;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2347:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2348;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2348:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2349;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2349:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2350;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2350:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2351;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2351:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2352;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2352:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2353;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2353:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2354;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2354:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2355;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2355:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2356;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2356:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2357;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2357:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2358;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2358:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2359;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2359:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2360;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2360:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2361;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2361:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2362;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2362:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2363;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2363:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2364;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2364:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2365;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2365:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2366;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2366:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2367;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2367:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2368;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2368:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2369;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2369:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2370;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2370:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2371;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2371:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2372;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2372:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2373;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2373:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2374;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2374:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2375;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2375:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2376;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2376:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2377;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2377:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2378;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2378:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2379;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2379:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2380;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2380:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2381;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2381:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2382;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2382:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2383;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2383:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2384;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2384:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2385;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2385:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2386;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2386:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2387;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2387:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2388;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2388:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2389;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2389:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2390;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2390:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2391;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2391:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2392;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2392:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2393;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2393:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2394;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2394:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2395;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2395:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2396;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2396:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2397;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2397:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2398;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2398:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2399;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2399:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2400;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2400:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2401;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2401:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2402;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2402:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2403;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2403:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2404;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2404:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2405;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2405:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2406;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2406:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2407;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2407:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2408;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2408:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2409;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2409:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2410;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2410:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2411;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2411:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2412;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2412:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2413;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2413:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2414;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2414:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2415;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2415:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2416;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2416:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2417;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2417:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2418;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2418:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2419;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2419:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2420;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2420:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2421;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2421:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2422;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2422:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2423;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2423:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2424;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2424:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2425;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2425:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2426;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2426:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2427;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2427:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2428;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2428:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2429;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2429:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2430;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2430:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2431;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2431:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2432;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2432:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2433;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2433:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2434;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2434:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2435;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2435:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2436;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2436:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2437;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2437:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2438;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2438:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2439;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2439:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2440;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2440:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2441;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2441:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2442;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2442:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2443;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2443:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2444;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2444:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2445;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2445:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2446;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2446:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2447;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2447:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2448;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2448:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2449;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2449:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2450;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2450:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2451;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2451:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2452;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2452:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2453;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2453:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2454;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2454:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2455;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2455:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2456;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2456:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2457;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2457:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2458;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2458:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2459;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2459:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2460;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2460:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2461;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2461:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2462;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2462:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2463;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2463:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2464;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2464:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2465;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2465:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2466;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2466:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2467;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2467:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2468;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2468:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2469;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2469:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2470;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2470:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2471;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2471:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2472;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2472:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2473;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2473:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2474;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2474:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2475;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2475:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2476;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2476:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2477;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2477:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2478;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2478:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2479;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2479:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2480;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2480:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2481;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2481:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2482;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2482:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2483;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2483:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2484;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2484:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2485;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2485:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2486;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2486:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2487;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2487:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2488;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2488:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2489;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2489:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2490;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2490:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2491;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2491:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2492;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2492:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2493;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2493:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2494;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2494:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2495;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2495:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2496;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2496:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2497;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2497:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2498;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2498:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2499;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2499:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2500;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2500:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2501;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2501:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2502;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2502:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2503;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2503:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2504;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2504:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2505;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2505:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2506;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2506:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2507;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2507:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2508;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2508:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2509;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2509:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2510;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2510:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2511;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2511:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2512;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2512:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2513;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2513:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2514;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2514:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2515;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2515:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2516;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2516:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2517;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2517:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2518;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2518:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2519;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2519:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2520;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2520:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2521;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2521:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2522;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2522:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2523;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2523:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2524;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2524:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2525;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2525:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2526;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2526:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2527;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2527:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2528;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2528:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2529;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2529:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2530;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2530:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2531;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2531:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2532;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2532:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2533;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2533:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2534;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2534:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2535;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2535:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2536;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2536:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2537;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2537:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2538;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2538:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2539;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2539:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2540;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2540:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2541;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2541:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2542;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2542:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2543;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2543:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2544;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2544:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2545;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2545:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2546;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2546:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2547;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2547:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2548;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2548:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2549;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2549:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2550;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2550:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2551;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2551:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2552;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2552:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2553;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2553:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2554;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2554:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SensorPackageType->SensorMeasurements.arrayLen < iso2SensorPackageType_SensorMeasurements_ARRAY_SIZE) {
						errn = decode_iso2SensorMeasurementsType(stream, &iso2SensorPackageType->SensorMeasurements.array[iso2SensorPackageType->SensorMeasurements.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 3;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='http://www.w3.org/2000/09/xmldsig#,PGPDataType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(("http://www.w3.org/2000/09/xmldsig#":PGPKeyID,"http://www.w3.org/2000/09/xmldsig#":PGPKeyPacket{0-1},(WC[##other:"http://www.w3.org/2000/09/xmldsig#"]){0-UNBOUNDED})|("http://www.w3.org/2000/09/xmldsig#":PGPKeyPacket,(WC[##other:"http://www.w3.org/2000/09/xmldsig#"]){0-UNBOUNDED}))',  derivedBy='RESTRICTION'.  */
static int decode_iso2PGPDataType(bitstream_t* stream, struct iso2PGPDataType* iso2PGPDataType) {
	int grammarID = 2555;
	int done = 0;
	
	init_iso2PGPDataType(iso2PGPDataType);
	
	while(!done) {
		switch(grammarID) {
		case 2555:
			/* FirstStartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2PGPDataType->PGPKeyID.bytesLen);
							if (errn == 0) {
								errn =  (iso2PGPDataType->PGPKeyID.bytesLen) <= iso2PGPDataType_PGPKeyID_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
							}
							if (errn == 0) {
								errn = decodeBytes(stream, iso2PGPDataType->PGPKeyID.bytesLen, iso2PGPDataType->PGPKeyID.bytes);
							}
							iso2PGPDataType->PGPKeyID_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyID) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 2556;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					/* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2PGPDataType->PGPKeyPacket.bytesLen);
							if (errn == 0) {
								errn =  (iso2PGPDataType->PGPKeyPacket.bytesLen) <= iso2PGPDataType_PGPKeyPacket_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
							}
							if (errn == 0) {
								errn = decodeBytes(stream, iso2PGPDataType->PGPKeyPacket.bytesLen, iso2PGPDataType->PGPKeyPacket.bytes);
							}
							iso2PGPDataType->PGPKeyPacket_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 2557;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2556:
			/* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket), START_ELEMENT_GENERIC, END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2PGPDataType->PGPKeyPacket.bytesLen);
							if (errn == 0) {
								errn =  (iso2PGPDataType->PGPKeyPacket.bytesLen) <= iso2PGPDataType_PGPKeyPacket_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
							}
							if (errn == 0) {
								errn = decodeBytes(stream, iso2PGPDataType->PGPKeyPacket.bytesLen, iso2PGPDataType->PGPKeyPacket.bytes);
							}
							iso2PGPDataType->PGPKeyPacket_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 2557;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					/* TODO unsupported event : START_ELEMENT_GENERIC */
					grammarID = 2557;
					break;
				case 2:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2557:
			/* Element[START_ELEMENT_GENERIC, END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					/* TODO unsupported event : START_ELEMENT_GENERIC */
					grammarID = 2557;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,ServiceDiscoveryResType',  base type name='V2GResponseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(("urn:iso:15118:2:2016:MsgBody":ResponseCode,"urn:iso:15118:2:2016:MsgBody":EVSEStatus{0-1}),("urn:iso:15118:2:2016:MsgBody":PaymentOptionList,"urn:iso:15118:2:2016:MsgBody":EnergyTransferServiceList,"urn:iso:15118:2:2016:MsgBody":VASList{0-1}))',  derivedBy='EXTENSION'.  */
static int decode_iso2ServiceDiscoveryResType(bitstream_t* stream, struct iso2ServiceDiscoveryResType* iso2ServiceDiscoveryResType) {
	int grammarID = 2558;
	int done = 0;
	
	init_iso2ServiceDiscoveryResType(iso2ServiceDiscoveryResType);
	
	while(!done) {
		switch(grammarID) {
		case 2558:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 5, &uint32);
							iso2ServiceDiscoveryResType->ResponseCode = (iso2responseCodeType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 2559;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2559:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PaymentOptionList)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2EVSEStatusType(stream, &iso2ServiceDiscoveryResType->EVSEStatus);
					iso2ServiceDiscoveryResType->EVSEStatus_isUsed = 1u;
					grammarID = 2560;
					break;
				case 1:
					errn = decode_iso2PaymentOptionListType(stream, &iso2ServiceDiscoveryResType->PaymentOptionList);
					grammarID = 2561;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2560:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PaymentOptionList)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PaymentOptionListType(stream, &iso2ServiceDiscoveryResType->PaymentOptionList);
					grammarID = 2561;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2561:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EnergyTransferServiceList)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2ServiceListType(stream, &iso2ServiceDiscoveryResType->EnergyTransferServiceList);
					grammarID = 2562;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2562:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}VASList), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2ServiceListType(stream, &iso2ServiceDiscoveryResType->VASList);
					iso2ServiceDiscoveryResType->VASList_isUsed = 1u;
					grammarID = 3;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,ServiceIDListType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgDataTypes":ServiceID{1-10})',  derivedBy='RESTRICTION'.  */
static int decode_iso2ServiceIDListType(bitstream_t* stream, struct iso2ServiceIDListType* iso2ServiceIDListType) {
	int grammarID = 2563;
	int done = 0;
	
	init_iso2ServiceIDListType(iso2ServiceIDListType);
	
	while(!done) {
		switch(grammarID) {
		case 2563:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ServiceID)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceIDListType->ServiceID.arrayLen < iso2ServiceIDListType_ServiceID_ARRAY_SIZE) {
						/* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2ServiceIDListType->ServiceID.array[iso2ServiceIDListType->ServiceID.arrayLen]);
								iso2ServiceIDListType->ServiceID.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ServiceID) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 2564;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2564:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ServiceID), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceIDListType->ServiceID.arrayLen < iso2ServiceIDListType_ServiceID_ARRAY_SIZE) {
						/* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2ServiceIDListType->ServiceID.array[iso2ServiceIDListType->ServiceID.arrayLen]);
								iso2ServiceIDListType->ServiceID.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ServiceID) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 2565;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2565:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ServiceID), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceIDListType->ServiceID.arrayLen < iso2ServiceIDListType_ServiceID_ARRAY_SIZE) {
						/* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2ServiceIDListType->ServiceID.array[iso2ServiceIDListType->ServiceID.arrayLen]);
								iso2ServiceIDListType->ServiceID.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ServiceID) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 2566;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2566:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ServiceID), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceIDListType->ServiceID.arrayLen < iso2ServiceIDListType_ServiceID_ARRAY_SIZE) {
						/* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2ServiceIDListType->ServiceID.array[iso2ServiceIDListType->ServiceID.arrayLen]);
								iso2ServiceIDListType->ServiceID.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ServiceID) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 2567;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2567:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ServiceID), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceIDListType->ServiceID.arrayLen < iso2ServiceIDListType_ServiceID_ARRAY_SIZE) {
						/* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2ServiceIDListType->ServiceID.array[iso2ServiceIDListType->ServiceID.arrayLen]);
								iso2ServiceIDListType->ServiceID.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ServiceID) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 2568;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2568:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ServiceID), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceIDListType->ServiceID.arrayLen < iso2ServiceIDListType_ServiceID_ARRAY_SIZE) {
						/* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2ServiceIDListType->ServiceID.array[iso2ServiceIDListType->ServiceID.arrayLen]);
								iso2ServiceIDListType->ServiceID.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ServiceID) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 2569;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2569:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ServiceID), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceIDListType->ServiceID.arrayLen < iso2ServiceIDListType_ServiceID_ARRAY_SIZE) {
						/* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2ServiceIDListType->ServiceID.array[iso2ServiceIDListType->ServiceID.arrayLen]);
								iso2ServiceIDListType->ServiceID.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ServiceID) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 2570;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2570:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ServiceID), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceIDListType->ServiceID.arrayLen < iso2ServiceIDListType_ServiceID_ARRAY_SIZE) {
						/* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2ServiceIDListType->ServiceID.array[iso2ServiceIDListType->ServiceID.arrayLen]);
								iso2ServiceIDListType->ServiceID.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ServiceID) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 2571;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2571:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ServiceID), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceIDListType->ServiceID.arrayLen < iso2ServiceIDListType_ServiceID_ARRAY_SIZE) {
						/* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2ServiceIDListType->ServiceID.array[iso2ServiceIDListType->ServiceID.arrayLen]);
								iso2ServiceIDListType->ServiceID.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ServiceID) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 2572;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2572:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ServiceID), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ServiceIDListType->ServiceID.arrayLen < iso2ServiceIDListType_ServiceID_ARRAY_SIZE) {
						/* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(errn == 0) {
							if(eventCode == 0) {
								errn = decodeUnsignedInteger16(stream, &iso2ServiceIDListType->ServiceID.array[iso2ServiceIDListType->ServiceID.arrayLen]);
								iso2ServiceIDListType->ServiceID.arrayLen++;
							} else {
								/* Second level event (e.g., xsi:type, xsi:nil, ...) */
								errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
							}
						}
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ServiceID) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,EVFinePositioningSetupParametersType',  base type name='anyType',  content type='EMPTY',  isAbstract='true',  hasTypeId='false',  final='0',  block='0',  derivedBy='RESTRICTION'.  */
static int decode_iso2EVFinePositioningSetupParametersType(bitstream_t* stream, struct iso2EVFinePositioningSetupParametersType* iso2EVFinePositioningSetupParametersType) {
	int grammarID = 674;
	int done = 0;
	
	init_iso2EVFinePositioningSetupParametersType(iso2EVFinePositioningSetupParametersType);
	
	while(!done) {
		switch(grammarID) {
		case 674:
			/* FirstStartTag[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,ChargeParameterDiscoveryResType',  base type name='V2GResponseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(("urn:iso:15118:2:2016:MsgBody":ResponseCode,"urn:iso:15118:2:2016:MsgBody":EVSEStatus{0-1}),("urn:iso:15118:2:2016:MsgBody":EVSEProcessing,"urn:iso:15118:2:2016:MsgBody":SAScheduleList{0-1},"urn:iso:15118:2:2016:MsgDataTypes":EVSEEnergyTransferParameter))',  derivedBy='EXTENSION'.  */
static int decode_iso2ChargeParameterDiscoveryResType(bitstream_t* stream, struct iso2ChargeParameterDiscoveryResType* iso2ChargeParameterDiscoveryResType) {
	int grammarID = 2573;
	int done = 0;
	
	init_iso2ChargeParameterDiscoveryResType(iso2ChargeParameterDiscoveryResType);
	
	while(!done) {
		switch(grammarID) {
		case 2573:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 5, &uint32);
							iso2ChargeParameterDiscoveryResType->ResponseCode = (iso2responseCodeType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 2574;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2574:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEProcessing)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2EVSEStatusType(stream, &iso2ChargeParameterDiscoveryResType->EVSEStatus);
					iso2ChargeParameterDiscoveryResType->EVSEStatus_isUsed = 1u;
					grammarID = 2575;
					break;
				case 1:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
							iso2ChargeParameterDiscoveryResType->EVSEProcessing = (iso2EVSEProcessingType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEProcessing) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 2576;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2575:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEProcessing)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
							iso2ChargeParameterDiscoveryResType->EVSEProcessing = (iso2EVSEProcessingType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEProcessing) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 2576;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2576:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SAScheduleList), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}AC_EVSEBidirectionalParameter), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}AC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}DC_EVSEBidirectionalParameter), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}DC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEEnergyTransferParameter), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}WPT_EVSEChargeParameter)] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2SAScheduleListType(stream, &iso2ChargeParameterDiscoveryResType->SAScheduleList);
					iso2ChargeParameterDiscoveryResType->SAScheduleList_isUsed = 1u;
					grammarID = 2577;
					break;
				case 1:
					errn = decode_iso2AC_EVSEBidirectionalParameterType(stream, &iso2ChargeParameterDiscoveryResType->AC_EVSEBidirectionalParameter);
					iso2ChargeParameterDiscoveryResType->AC_EVSEBidirectionalParameter_isUsed = 1u;
					grammarID = 3;
					break;
				case 2:
					errn = decode_iso2AC_EVSEChargeParameterType(stream, &iso2ChargeParameterDiscoveryResType->AC_EVSEChargeParameter);
					iso2ChargeParameterDiscoveryResType->AC_EVSEChargeParameter_isUsed = 1u;
					grammarID = 3;
					break;
				case 3:
					errn = decode_iso2DC_EVSEBidirectionalParameterType(stream, &iso2ChargeParameterDiscoveryResType->DC_EVSEBidirectionalParameter);
					iso2ChargeParameterDiscoveryResType->DC_EVSEBidirectionalParameter_isUsed = 1u;
					grammarID = 3;
					break;
				case 4:
					errn = decode_iso2DC_EVSEChargeParameterType(stream, &iso2ChargeParameterDiscoveryResType->DC_EVSEChargeParameter);
					iso2ChargeParameterDiscoveryResType->DC_EVSEChargeParameter_isUsed = 1u;
					grammarID = 3;
					break;
				case 5:
					errn = decode_iso2EVSEEnergyTransferParameterType(stream, &iso2ChargeParameterDiscoveryResType->EVSEEnergyTransferParameter);
					iso2ChargeParameterDiscoveryResType->EVSEEnergyTransferParameter_isUsed = 1u;
					grammarID = 3;
					break;
				case 6:
					errn = decode_iso2WPT_EVSEChargeParameterType(stream, &iso2ChargeParameterDiscoveryResType->WPT_EVSEChargeParameter);
					iso2ChargeParameterDiscoveryResType->WPT_EVSEChargeParameter_isUsed = 1u;
					grammarID = 3;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2577:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}AC_EVSEBidirectionalParameter), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}AC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}DC_EVSEBidirectionalParameter), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}DC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEEnergyTransferParameter), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}WPT_EVSEChargeParameter)] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2AC_EVSEBidirectionalParameterType(stream, &iso2ChargeParameterDiscoveryResType->AC_EVSEBidirectionalParameter);
					iso2ChargeParameterDiscoveryResType->AC_EVSEBidirectionalParameter_isUsed = 1u;
					grammarID = 3;
					break;
				case 1:
					errn = decode_iso2AC_EVSEChargeParameterType(stream, &iso2ChargeParameterDiscoveryResType->AC_EVSEChargeParameter);
					iso2ChargeParameterDiscoveryResType->AC_EVSEChargeParameter_isUsed = 1u;
					grammarID = 3;
					break;
				case 2:
					errn = decode_iso2DC_EVSEBidirectionalParameterType(stream, &iso2ChargeParameterDiscoveryResType->DC_EVSEBidirectionalParameter);
					iso2ChargeParameterDiscoveryResType->DC_EVSEBidirectionalParameter_isUsed = 1u;
					grammarID = 3;
					break;
				case 3:
					errn = decode_iso2DC_EVSEChargeParameterType(stream, &iso2ChargeParameterDiscoveryResType->DC_EVSEChargeParameter);
					iso2ChargeParameterDiscoveryResType->DC_EVSEChargeParameter_isUsed = 1u;
					grammarID = 3;
					break;
				case 4:
					errn = decode_iso2EVSEEnergyTransferParameterType(stream, &iso2ChargeParameterDiscoveryResType->EVSEEnergyTransferParameter);
					iso2ChargeParameterDiscoveryResType->EVSEEnergyTransferParameter_isUsed = 1u;
					grammarID = 3;
					break;
				case 5:
					errn = decode_iso2WPT_EVSEChargeParameterType(stream, &iso2ChargeParameterDiscoveryResType->WPT_EVSEChargeParameter);
					iso2ChargeParameterDiscoveryResType->WPT_EVSEChargeParameter_isUsed = 1u;
					grammarID = 3;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,PowerDemandResType',  base type name='V2GResponseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(("urn:iso:15118:2:2016:MsgBody":ResponseCode,"urn:iso:15118:2:2016:MsgBody":EVSEStatus{0-1}),("urn:iso:15118:2:2016:MsgBody":EVSEOutputPower,"urn:iso:15118:2:2016:MsgBody":EVSEID,"urn:iso:15118:2:2016:MsgBody":SAScheduleTupleID{0-1},"urn:iso:15118:2:2016:MsgBody":MeterInfo{0-1},"urn:iso:15118:2:2016:MsgBody":ReceiptRequired{0-1},"urn:iso:15118:2:2016:MsgBody":PowerDemandParameters{0-1}))',  derivedBy='EXTENSION'.  */
static int decode_iso2PowerDemandResType(bitstream_t* stream, struct iso2PowerDemandResType* iso2PowerDemandResType) {
	int grammarID = 2578;
	int done = 0;
	
	init_iso2PowerDemandResType(iso2PowerDemandResType);
	
	while(!done) {
		switch(grammarID) {
		case 2578:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 5, &uint32);
							iso2PowerDemandResType->ResponseCode = (iso2responseCodeType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 2579;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2579:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEOutputPower)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2EVSEStatusType(stream, &iso2PowerDemandResType->EVSEStatus);
					iso2PowerDemandResType->EVSEStatus_isUsed = 1u;
					grammarID = 2580;
					break;
				case 1:
					errn = decode_iso2PhysicalValueType(stream, &iso2PowerDemandResType->EVSEOutputPower);
					grammarID = 2581;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2580:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEOutputPower)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2PhysicalValueType(stream, &iso2PowerDemandResType->EVSEOutputPower);
					grammarID = 2581;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2581:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEID)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[STRING]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2PowerDemandResType->EVSEID.charactersLen);
							if (errn == 0) {
								if (iso2PowerDemandResType->EVSEID.charactersLen >= 2) {
									iso2PowerDemandResType->EVSEID.charactersLen = (uint16_t)(iso2PowerDemandResType->EVSEID.charactersLen - 2); /* string table miss */
									errn = decodeCharacters(stream, iso2PowerDemandResType->EVSEID.charactersLen, iso2PowerDemandResType->EVSEID.characters, iso2PowerDemandResType_EVSEID_CHARACTERS_SIZE);
								} else {
									/* string table hit */
									errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
								}
							}
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEID) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 2582;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2582:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ReceiptRequired), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PowerDemandParameters), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
							iso2PowerDemandResType->SAScheduleTupleID = (uint8_t)(uint32 + 1);
							iso2PowerDemandResType->SAScheduleTupleID_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SAScheduleTupleID) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 2583;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					errn = decode_iso2MeterInfoType(stream, &iso2PowerDemandResType->MeterInfo);
					iso2PowerDemandResType->MeterInfo_isUsed = 1u;
					grammarID = 2584;
					break;
				case 2:
					/* FirstStartTag[CHARACTERS[BOOLEAN]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeBoolean(stream, &iso2PowerDemandResType->ReceiptRequired);
							iso2PowerDemandResType->ReceiptRequired_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ReceiptRequired) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1873;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 3:
					errn = decode_iso2ParameterSetType(stream, &iso2PowerDemandResType->PowerDemandParameters);
					iso2PowerDemandResType->PowerDemandParameters_isUsed = 1u;
					grammarID = 3;
					break;
				case 4:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2583:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ReceiptRequired), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PowerDemandParameters), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2MeterInfoType(stream, &iso2PowerDemandResType->MeterInfo);
					iso2PowerDemandResType->MeterInfo_isUsed = 1u;
					grammarID = 2584;
					break;
				case 1:
					/* FirstStartTag[CHARACTERS[BOOLEAN]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeBoolean(stream, &iso2PowerDemandResType->ReceiptRequired);
							iso2PowerDemandResType->ReceiptRequired_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ReceiptRequired) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1873;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 2:
					errn = decode_iso2ParameterSetType(stream, &iso2PowerDemandResType->PowerDemandParameters);
					iso2PowerDemandResType->PowerDemandParameters_isUsed = 1u;
					grammarID = 3;
					break;
				case 3:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2584:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ReceiptRequired), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PowerDemandParameters), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[BOOLEAN]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeBoolean(stream, &iso2PowerDemandResType->ReceiptRequired);
							iso2PowerDemandResType->ReceiptRequired_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ReceiptRequired) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 1873;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					errn = decode_iso2ParameterSetType(stream, &iso2PowerDemandResType->PowerDemandParameters);
					iso2PowerDemandResType->PowerDemandParameters_isUsed = 1u;
					grammarID = 3;
					break;
				case 2:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1873:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PowerDemandParameters), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2ParameterSetType(stream, &iso2PowerDemandResType->PowerDemandParameters);
					iso2PowerDemandResType->PowerDemandParameters_isUsed = 1u;
					grammarID = 3;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,ChargingProfileType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgDataTypes":ProfileEntry{1-UNBOUNDED})',  derivedBy='RESTRICTION'.  */
static int decode_iso2ChargingProfileType(bitstream_t* stream, struct iso2ChargingProfileType* iso2ChargingProfileType) {
	int grammarID = 2585;
	int done = 0;
	
	init_iso2ChargingProfileType(iso2ChargingProfileType);
	
	while(!done) {
		switch(grammarID) {
		case 2585:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ProfileEntry)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ChargingProfileType->ProfileEntry.arrayLen < iso2ChargingProfileType_ProfileEntry_ARRAY_SIZE) {
						errn = decode_iso2PMaxScheduleEntryType(stream, &iso2ChargingProfileType->ProfileEntry.array[iso2ChargingProfileType->ProfileEntry.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2586;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2586:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ProfileEntry), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2ChargingProfileType->ProfileEntry.arrayLen < iso2ChargingProfileType_ProfileEntry_ARRAY_SIZE) {
						errn = decode_iso2PMaxScheduleEntryType(stream, &iso2ChargingProfileType->ProfileEntry.array[iso2ChargingProfileType->ProfileEntry.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2586;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,FinePositioningReqType',  base type name='BodyBaseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgBody":EVProcessing,"urn:iso:15118:2:2016:MsgDataTypes":EVFinePositioningParameters{0-1})',  derivedBy='EXTENSION'.  */
static int decode_iso2FinePositioningReqType(bitstream_t* stream, struct iso2FinePositioningReqType* iso2FinePositioningReqType) {
	int grammarID = 2587;
	int done = 0;
	
	init_iso2FinePositioningReqType(iso2FinePositioningReqType);
	
	while(!done) {
		switch(grammarID) {
		case 2587:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVProcessing)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
							iso2FinePositioningReqType->EVProcessing = (iso2EVSEProcessingType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVProcessing) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 2588;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2588:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVFinePositioningParameters), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Generic_EVFinePositioningParameters), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}LFA_EVFinePositioningParameters), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 3, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2EVFinePositioningParametersType(stream, &iso2FinePositioningReqType->EVFinePositioningParameters);
					iso2FinePositioningReqType->EVFinePositioningParameters_isUsed = 1u;
					grammarID = 3;
					break;
				case 1:
					errn = decode_iso2Generic_EVFinePositioningParametersType(stream, &iso2FinePositioningReqType->Generic_EVFinePositioningParameters);
					iso2FinePositioningReqType->Generic_EVFinePositioningParameters_isUsed = 1u;
					grammarID = 3;
					break;
				case 2:
					errn = decode_iso2LFA_EVFinePositioningParametersType(stream, &iso2FinePositioningReqType->LFA_EVFinePositioningParameters);
					iso2FinePositioningReqType->LFA_EVFinePositioningParameters_isUsed = 1u;
					grammarID = 3;
					break;
				case 3:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,SalesTariffType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgDataTypes":SalesTariffID,"urn:iso:15118:2:2016:MsgDataTypes":SalesTariffDescription{0-1},"urn:iso:15118:2:2016:MsgDataTypes":NumEPriceLevels{0-1},"urn:iso:15118:2:2016:MsgDataTypes":SalesTariffEntry{1-UNBOUNDED})',  derivedBy='RESTRICTION'.  */
static int decode_iso2SalesTariffType(bitstream_t* stream, struct iso2SalesTariffType* iso2SalesTariffType) {
	int grammarID = 2589;
	int done = 0;
	
	init_iso2SalesTariffType(iso2SalesTariffType);
	
	while(!done) {
		switch(grammarID) {
		case 2589:
			/* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2016:MsgDataTypes}Id)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decodeUnsignedInteger16(stream, &iso2SalesTariffType->Id.charactersLen);
					if (errn == 0) {
						if (iso2SalesTariffType->Id.charactersLen >= 2) {
							iso2SalesTariffType->Id.charactersLen = (uint16_t)(iso2SalesTariffType->Id.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2SalesTariffType->Id.charactersLen, iso2SalesTariffType->Id.characters, iso2SalesTariffType_Id_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					grammarID = 2590;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2590:
			/* StartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SalesTariffID)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
							iso2SalesTariffType->SalesTariffID = (uint8_t)(uint32 + 1);
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SalesTariffID) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 2591;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2591:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SalesTariffDescription), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}NumEPriceLevels), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SalesTariffEntry)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[STRING]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2SalesTariffType->SalesTariffDescription.charactersLen);
							if (errn == 0) {
								if (iso2SalesTariffType->SalesTariffDescription.charactersLen >= 2) {
									iso2SalesTariffType->SalesTariffDescription.charactersLen = (uint16_t)(iso2SalesTariffType->SalesTariffDescription.charactersLen - 2); /* string table miss */
									errn = decodeCharacters(stream, iso2SalesTariffType->SalesTariffDescription.charactersLen, iso2SalesTariffType->SalesTariffDescription.characters, iso2SalesTariffType_SalesTariffDescription_CHARACTERS_SIZE);
								} else {
									/* string table hit */
									errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
								}
							}
							iso2SalesTariffType->SalesTariffDescription_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SalesTariffDescription) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 2592;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
							iso2SalesTariffType->NumEPriceLevels = (uint8_t)(uint32 + 0);
							iso2SalesTariffType->NumEPriceLevels_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}NumEPriceLevels) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 2593;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 2:
					if (iso2SalesTariffType->SalesTariffEntry.arrayLen < iso2SalesTariffType_SalesTariffEntry_ARRAY_SIZE) {
						errn = decode_iso2SalesTariffEntryType(stream, &iso2SalesTariffType->SalesTariffEntry.array[iso2SalesTariffType->SalesTariffEntry.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2594;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2592:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}NumEPriceLevels), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SalesTariffEntry)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
							iso2SalesTariffType->NumEPriceLevels = (uint8_t)(uint32 + 0);
							iso2SalesTariffType->NumEPriceLevels_isUsed = 1u;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}NumEPriceLevels) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 2593;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				case 1:
					if (iso2SalesTariffType->SalesTariffEntry.arrayLen < iso2SalesTariffType_SalesTariffEntry_ARRAY_SIZE) {
						errn = decode_iso2SalesTariffEntryType(stream, &iso2SalesTariffType->SalesTariffEntry.array[iso2SalesTariffType->SalesTariffEntry.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2594;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2593:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SalesTariffEntry)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SalesTariffType->SalesTariffEntry.arrayLen < iso2SalesTariffType_SalesTariffEntry_ARRAY_SIZE) {
						errn = decode_iso2SalesTariffEntryType(stream, &iso2SalesTariffType->SalesTariffEntry.array[iso2SalesTariffType->SalesTariffEntry.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2594;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2594:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SalesTariffEntry), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SalesTariffType->SalesTariffEntry.arrayLen < iso2SalesTariffType_SalesTariffEntry_ARRAY_SIZE) {
						errn = decode_iso2SalesTariffEntryType(stream, &iso2SalesTariffType->SalesTariffEntry.array[iso2SalesTariffType->SalesTariffEntry.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 2594;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,SensorType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgDataTypes":SensorID,"urn:iso:15118:2:2016:MsgDataTypes":SensorPosition,"urn:iso:15118:2:2016:MsgDataTypes":SensorOrientation)',  derivedBy='RESTRICTION'.  */
static int decode_iso2SensorType(bitstream_t* stream, struct iso2SensorType* iso2SensorType) {
	int grammarID = 2595;
	int done = 0;
	
	init_iso2SensorType(iso2SensorType);
	
	while(!done) {
		switch(grammarID) {
		case 2595:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorID)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
							iso2SensorType->SensorID = (uint8_t)(uint32 + 0);
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorID) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 2596;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2596:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2CartesianCoordinatesType(stream, &iso2SensorType->SensorPosition);
					grammarID = 2597;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2597:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorOrientation)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2CartesianCoordinatesType(stream, &iso2SensorType->SensorOrientation);
					grammarID = 3;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='http://www.w3.org/2000/09/xmldsig#,SignatureValueType',  base type name='base64Binary',  content type='SIMPLE',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  derivedBy='EXTENSION'.  */
static int decode_iso2SignatureValueType(bitstream_t* stream, struct iso2SignatureValueType* iso2SignatureValueType) {
	int grammarID = 2598;
	int done = 0;
	
	init_iso2SignatureValueType(iso2SignatureValueType);
	
	while(!done) {
		switch(grammarID) {
		case 2598:
			/* FirstStartTag[ATTRIBUTE[STRING](Id), CHARACTERS[BINARY_BASE64]] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decodeUnsignedInteger16(stream, &iso2SignatureValueType->Id.charactersLen);
					if (errn == 0) {
						if (iso2SignatureValueType->Id.charactersLen >= 2) {
							iso2SignatureValueType->Id.charactersLen = (uint16_t)(iso2SignatureValueType->Id.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2SignatureValueType->Id.charactersLen, iso2SignatureValueType->Id.characters, iso2SignatureValueType_Id_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					iso2SignatureValueType->Id_isUsed = 1u;
					grammarID = 2016;
					break;
				case 1:
					errn = decodeUnsignedInteger16(stream, &iso2SignatureValueType->CONTENT.bytesLen);
					if (errn == 0) {
						errn =  (iso2SignatureValueType->CONTENT.bytesLen) <= iso2SignatureValueType_CONTENT_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
					}
					if (errn == 0) {
						errn = decodeBytes(stream, iso2SignatureValueType->CONTENT.bytesLen, iso2SignatureValueType->CONTENT.bytes);
					}
					grammarID = 3;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2016:
			/* StartTag[CHARACTERS[BINARY_BASE64]] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decodeUnsignedInteger16(stream, &iso2SignatureValueType->CONTENT.bytesLen);
					if (errn == 0) {
						errn =  (iso2SignatureValueType->CONTENT.bytesLen) <= iso2SignatureValueType_CONTENT_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
					}
					if (errn == 0) {
						errn = decodeBytes(stream, iso2SignatureValueType->CONTENT.bytesLen, iso2SignatureValueType->CONTENT.bytes);
					}
					grammarID = 3;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='http://www.w3.org/2000/09/xmldsig#,SignedInfoType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("http://www.w3.org/2000/09/xmldsig#":CanonicalizationMethod,"http://www.w3.org/2000/09/xmldsig#":SignatureMethod,"http://www.w3.org/2000/09/xmldsig#":Reference{1-UNBOUNDED})',  derivedBy='RESTRICTION'.  */
static int decode_iso2SignedInfoType(bitstream_t* stream, struct iso2SignedInfoType* iso2SignedInfoType) {
	int grammarID = 2599;
	int done = 0;
	
	init_iso2SignedInfoType(iso2SignedInfoType);
	
	while(!done) {
		switch(grammarID) {
		case 2599:
			/* FirstStartTag[ATTRIBUTE[STRING](Id), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decodeUnsignedInteger16(stream, &iso2SignedInfoType->Id.charactersLen);
					if (errn == 0) {
						if (iso2SignedInfoType->Id.charactersLen >= 2) {
							iso2SignedInfoType->Id.charactersLen = (uint16_t)(iso2SignedInfoType->Id.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2SignedInfoType->Id.charactersLen, iso2SignedInfoType->Id.characters, iso2SignedInfoType_Id_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					iso2SignedInfoType->Id_isUsed = 1u;
					grammarID = 2600;
					break;
				case 1:
					errn = decode_iso2CanonicalizationMethodType(stream, &iso2SignedInfoType->CanonicalizationMethod);
					grammarID = 2601;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2600:
			/* StartTag[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2CanonicalizationMethodType(stream, &iso2SignedInfoType->CanonicalizationMethod);
					grammarID = 2601;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2601:
			/* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureMethod)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2SignatureMethodType(stream, &iso2SignedInfoType->SignatureMethod);
					grammarID = 2602;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2602:
			/* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SignedInfoType->Reference.arrayLen < iso2SignedInfoType_Reference_ARRAY_SIZE) {
						errn = decode_iso2ReferenceType(stream, &iso2SignedInfoType->Reference.array[iso2SignedInfoType->Reference.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1964;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 1964:
			/* Element[START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference), END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					if (iso2SignedInfoType->Reference.arrayLen < iso2SignedInfoType_Reference_ARRAY_SIZE) {
						errn = decode_iso2ReferenceType(stream, &iso2SignedInfoType->Reference.array[iso2SignedInfoType->Reference.arrayLen++]);
					} else { 
						errn = EXI_ERROR_OUT_OF_BOUNDS;
					}
					grammarID = 1964;
					break;
				case 1:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,PowerDeliveryResType',  base type name='V2GResponseType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='(("urn:iso:15118:2:2016:MsgBody":ResponseCode,"urn:iso:15118:2:2016:MsgBody":EVSEStatus{0-1}),("urn:iso:15118:2:2016:MsgBody":EVSEProcessing))',  derivedBy='EXTENSION'.  */
static int decode_iso2PowerDeliveryResType(bitstream_t* stream, struct iso2PowerDeliveryResType* iso2PowerDeliveryResType) {
	int grammarID = 5;
	int done = 0;
	
	init_iso2PowerDeliveryResType(iso2PowerDeliveryResType);
	
	while(!done) {
		switch(grammarID) {
		case 5:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 5, &uint32);
							iso2PowerDeliveryResType->ResponseCode = (iso2responseCodeType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 6;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 6:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEProcessing)] */
			errn = decodeNBitUnsignedInteger(stream, 2, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decode_iso2EVSEStatusType(stream, &iso2PowerDeliveryResType->EVSEStatus);
					iso2PowerDeliveryResType->EVSEStatus_isUsed = 1u;
					grammarID = 7;
					break;
				case 1:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
							iso2PowerDeliveryResType->EVSEProcessing = (iso2EVSEProcessingType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEProcessing) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 7:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEProcessing)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
							iso2PowerDeliveryResType->EVSEProcessing = (iso2EVSEProcessingType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEProcessing) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgBody,CableCheckReqType',  base type name='BodyBaseType',  content type='EMPTY',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  derivedBy='EXTENSION'.  */
static int decode_iso2CableCheckReqType(bitstream_t* stream, struct iso2CableCheckReqType* iso2CableCheckReqType) {
	int grammarID = 674;
	int done = 0;
	
	init_iso2CableCheckReqType(iso2CableCheckReqType);
	
	while(!done) {
		switch(grammarID) {
		case 674:
			/* FirstStartTag[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,SelectedServiceType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgDataTypes":ServiceID,"urn:iso:15118:2:2016:MsgDataTypes":ParameterSetID)',  derivedBy='RESTRICTION'.  */
static int decode_iso2SelectedServiceType(bitstream_t* stream, struct iso2SelectedServiceType* iso2SelectedServiceType) {
	int grammarID = 2603;
	int done = 0;
	
	init_iso2SelectedServiceType(iso2SelectedServiceType);
	
	while(!done) {
		switch(grammarID) {
		case 2603:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ServiceID)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2SelectedServiceType->ServiceID);
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ServiceID) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 2604;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2604:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSetID)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2SelectedServiceType->ParameterSetID);
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSetID) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,DiffieHellmanPublickeyType',  base type name='dHpublickeyType',  content type='SIMPLE',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  derivedBy='EXTENSION'.  */
static int decode_iso2DiffieHellmanPublickeyType(bitstream_t* stream, struct iso2DiffieHellmanPublickeyType* iso2DiffieHellmanPublickeyType) {
	int grammarID = 2015;
	int done = 0;
	
	init_iso2DiffieHellmanPublickeyType(iso2DiffieHellmanPublickeyType);
	
	while(!done) {
		switch(grammarID) {
		case 2015:
			/* FirstStartTag[ATTRIBUTE[STRING]({urn:iso:15118:2:2016:MsgDataTypes}Id)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decodeUnsignedInteger16(stream, &iso2DiffieHellmanPublickeyType->Id.charactersLen);
					if (errn == 0) {
						if (iso2DiffieHellmanPublickeyType->Id.charactersLen >= 2) {
							iso2DiffieHellmanPublickeyType->Id.charactersLen = (uint16_t)(iso2DiffieHellmanPublickeyType->Id.charactersLen - 2); /* string table miss */
							errn = decodeCharacters(stream, iso2DiffieHellmanPublickeyType->Id.charactersLen, iso2DiffieHellmanPublickeyType->Id.characters, iso2DiffieHellmanPublickeyType_Id_CHARACTERS_SIZE);
						} else {
							/* string table hit */
							errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
						}
					}
					grammarID = 2016;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2016:
			/* StartTag[CHARACTERS[BINARY_BASE64]] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					errn = decodeUnsignedInteger16(stream, &iso2DiffieHellmanPublickeyType->CONTENT.bytesLen);
					if (errn == 0) {
						errn =  (iso2DiffieHellmanPublickeyType->CONTENT.bytesLen) <= iso2DiffieHellmanPublickeyType_CONTENT_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
					}
					if (errn == 0) {
						errn = decodeBytes(stream, iso2DiffieHellmanPublickeyType->CONTENT.bytesLen, iso2DiffieHellmanPublickeyType->CONTENT.bytes);
					}
					grammarID = 3;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}

/* Complex type name='urn:iso:15118:2:2016:MsgDataTypes,EVSEStatusType',  base type name='anyType',  content type='ELEMENT',  isAbstract='false',  hasTypeId='false',  final='0',  block='0',  particle='("urn:iso:15118:2:2016:MsgDataTypes":NotificationMaxDelay,"urn:iso:15118:2:2016:MsgDataTypes":EVSENotification)',  derivedBy='RESTRICTION'.  */
static int decode_iso2EVSEStatusType(bitstream_t* stream, struct iso2EVSEStatusType* iso2EVSEStatusType) {
	int grammarID = 2605;
	int done = 0;
	
	init_iso2EVSEStatusType(iso2EVSEStatusType);
	
	while(!done) {
		switch(grammarID) {
		case 2605:
			/* FirstStartTag[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}NotificationMaxDelay)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeUnsignedInteger16(stream, &iso2EVSEStatusType->NotificationMaxDelay);
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}NotificationMaxDelay) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 2606;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 2606:
			/* Element[START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSENotification)] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					/* FirstStartTag[CHARACTERS[ENUMERATION]] */
					errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
					if(errn == 0) {
						if(eventCode == 0) {
							errn = decodeNBitUnsignedInteger(stream, 1, &uint32);
							iso2EVSEStatusType->EVSENotification = (iso2EVSENotificationType) uint32;
						} else {
							/* Second level event (e.g., xsi:type, xsi:nil, ...) */
							errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
						}
					}
					if(errn == 0) {
						/* valid EE for simple element START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSENotification) ? */
						errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
						if(eventCode == 0) {
						grammarID = 3;
						} else {
							errn = EXI_DEVIANT_SUPPORT_NOT_DEPLOYED; /* or also typecast and nillable */
						}
					}
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		case 3:
			/* Element[END_ELEMENT] */
			errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
			if (errn == 0) {
				switch(eventCode) {
				case 0:
					done = 1;
					grammarID = 4;
					break;
				default:
					errn = EXI_ERROR_UNKOWN_EVENT_CODE;
					break;
				}
			}
			break;
		default:
			errn = EXI_ERROR_UNKOWN_GRAMMAR_ID;
			break;
		}
		if(errn) {
			done = 1;
		}
	}
	return errn;
}




int decode_iso2ExiDocument(bitstream_t* stream, struct iso2EXIDocument* exiDoc) {
	errn = readEXIHeader(stream);

	if(errn == 0) {
		/* DocContent[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}AC_BidirectionalControlReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}AC_BidirectionalControlRes), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}AC_EVBidirectionalParameter), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}AC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}AC_EVSEBidirectionalParameter), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}AC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}AlignmentCheckReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}AlignmentCheckRes), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}AuthorizationReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}AuthorizationRes), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}BodyElement), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}CableCheckReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}CableCheckRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}CertificateInstallationReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}CertificateInstallationRes), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}CertificateUpdateReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}CertificateUpdateRes), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ChargeParameterDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ChargeParameterDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ChargingStatusReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ChargingStatusRes), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ConnectChargingDeviceReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ConnectChargingDeviceRes), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}CurrentDemandReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}CurrentDemandRes), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}DC_BidirectionalControlReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}DC_BidirectionalControlRes), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}DC_EVBidirectionalParameter), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}DC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}DC_EVSEBidirectionalParameter), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}DC_EVSEChargeParameter), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}DisconnectChargingDeviceReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}DisconnectChargingDeviceRes), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVEnergyTransferParameter), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVFinePositioningParameters), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVFinePositioningSetupParameters), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEEnergyTransferParameter), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEFinePositioningParameters), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEFinePositioningSetupParameters), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}FinePositioningReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}FinePositioningRes), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}FinePositioningSetupReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}FinePositioningSetupRes), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Generic_EVFinePositioningParameters), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Generic_EVSEFinePositioningParameters), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyInfo), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}LFA_EVFinePositioningParameters), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}LFA_EVFinePositioningSetupParameters), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}LFA_EVSEFinePositioningParameters), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}LFA_EVSEFinePositioningSetupParameters), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MV_EVSEFinePositioningParameters), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MV_EVSEFinePositioningSetupParameters), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Manifest), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}MeteringReceiptRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}PMaxScheduleEntry), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PairingReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PairingRes), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PaymentServiceSelectionReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PaymentServiceSelectionRes), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PowerDemandReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PowerDemandRes), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PreChargeReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PreChargeRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SAScheduleList), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SalesTariffEntry), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ServiceDetailReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ServiceDetailRes), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SessionStopReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SessionStopRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperties), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SystemStatusReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SystemStatusRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}V2GRequest), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}V2GResponse), START_ELEMENT({urn:iso:15118:2:2016:MsgDef}V2G_Message), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}VehicleCheckInReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}VehicleCheckInRes), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}VehicleCheckOutReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}VehicleCheckOutRes), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}WPT_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}WPT_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}WeldingDetectionReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}WeldingDetectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT_GENERIC] */
		init_iso2EXIDocument(exiDoc);
		errn = decodeNBitUnsignedInteger(stream, 7, &eventCode);
		if(errn == 0) {
			switch(eventCode) {
			case 0:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}AC_BidirectionalControlReq) */
				errn = decode_iso2AC_BidirectionalControlReqType(stream, &exiDoc->AC_BidirectionalControlReq);
				exiDoc->AC_BidirectionalControlReq_isUsed = 1u;
				break;
			case 1:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}AC_BidirectionalControlRes) */
				errn = decode_iso2AC_BidirectionalControlResType(stream, &exiDoc->AC_BidirectionalControlRes);
				exiDoc->AC_BidirectionalControlRes_isUsed = 1u;
				break;
			case 2:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}AC_EVBidirectionalParameter) */
				errn = decode_iso2AC_EVBidirectionalParameterType(stream, &exiDoc->AC_EVBidirectionalParameter);
				exiDoc->AC_EVBidirectionalParameter_isUsed = 1u;
				break;
			case 3:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}AC_EVChargeParameter) */
				errn = decode_iso2AC_EVChargeParameterType(stream, &exiDoc->AC_EVChargeParameter);
				exiDoc->AC_EVChargeParameter_isUsed = 1u;
				break;
			case 4:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}AC_EVSEBidirectionalParameter) */
				errn = decode_iso2AC_EVSEBidirectionalParameterType(stream, &exiDoc->AC_EVSEBidirectionalParameter);
				exiDoc->AC_EVSEBidirectionalParameter_isUsed = 1u;
				break;
			case 5:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}AC_EVSEChargeParameter) */
				errn = decode_iso2AC_EVSEChargeParameterType(stream, &exiDoc->AC_EVSEChargeParameter);
				exiDoc->AC_EVSEChargeParameter_isUsed = 1u;
				break;
			case 6:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}AlignmentCheckReq) */
				errn = decode_iso2AlignmentCheckReqType(stream, &exiDoc->AlignmentCheckReq);
				exiDoc->AlignmentCheckReq_isUsed = 1u;
				break;
			case 7:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}AlignmentCheckRes) */
				errn = decode_iso2AlignmentCheckResType(stream, &exiDoc->AlignmentCheckRes);
				exiDoc->AlignmentCheckRes_isUsed = 1u;
				break;
			case 8:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}AuthorizationReq) */
				errn = decode_iso2AuthorizationReqType(stream, &exiDoc->AuthorizationReq);
				exiDoc->AuthorizationReq_isUsed = 1u;
				break;
			case 9:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}AuthorizationRes) */
				errn = decode_iso2AuthorizationResType(stream, &exiDoc->AuthorizationRes);
				exiDoc->AuthorizationRes_isUsed = 1u;
				break;
			case 10:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}BodyElement) */
				errn = decode_iso2BodyBaseType(stream, &exiDoc->BodyElement);
				exiDoc->BodyElement_isUsed = 1u;
				break;
			case 11:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}CableCheckReq) */
				errn = decode_iso2CableCheckReqType(stream, &exiDoc->CableCheckReq);
				exiDoc->CableCheckReq_isUsed = 1u;
				break;
			case 12:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}CableCheckRes) */
				errn = decode_iso2CableCheckResType(stream, &exiDoc->CableCheckRes);
				exiDoc->CableCheckRes_isUsed = 1u;
				break;
			case 13:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod) */
				errn = decode_iso2CanonicalizationMethodType(stream, &exiDoc->CanonicalizationMethod);
				exiDoc->CanonicalizationMethod_isUsed = 1u;
				break;
			case 14:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}CertificateInstallationReq) */
				errn = decode_iso2CertificateInstallationReqType(stream, &exiDoc->CertificateInstallationReq);
				exiDoc->CertificateInstallationReq_isUsed = 1u;
				break;
			case 15:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}CertificateInstallationRes) */
				errn = decode_iso2CertificateInstallationResType(stream, &exiDoc->CertificateInstallationRes);
				exiDoc->CertificateInstallationRes_isUsed = 1u;
				break;
			case 16:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}CertificateUpdateReq) */
				errn = decode_iso2CertificateUpdateReqType(stream, &exiDoc->CertificateUpdateReq);
				exiDoc->CertificateUpdateReq_isUsed = 1u;
				break;
			case 17:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}CertificateUpdateRes) */
				errn = decode_iso2CertificateUpdateResType(stream, &exiDoc->CertificateUpdateRes);
				exiDoc->CertificateUpdateRes_isUsed = 1u;
				break;
			case 18:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ChargeParameterDiscoveryReq) */
				errn = decode_iso2ChargeParameterDiscoveryReqType(stream, &exiDoc->ChargeParameterDiscoveryReq);
				exiDoc->ChargeParameterDiscoveryReq_isUsed = 1u;
				break;
			case 19:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ChargeParameterDiscoveryRes) */
				errn = decode_iso2ChargeParameterDiscoveryResType(stream, &exiDoc->ChargeParameterDiscoveryRes);
				exiDoc->ChargeParameterDiscoveryRes_isUsed = 1u;
				break;
			case 20:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ChargingStatusReq) */
				errn = decode_iso2ChargingStatusReqType(stream, &exiDoc->ChargingStatusReq);
				exiDoc->ChargingStatusReq_isUsed = 1u;
				break;
			case 21:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ChargingStatusRes) */
				errn = decode_iso2ChargingStatusResType(stream, &exiDoc->ChargingStatusRes);
				exiDoc->ChargingStatusRes_isUsed = 1u;
				break;
			case 22:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ConnectChargingDeviceReq) */
				errn = decode_iso2ConnectChargingDeviceReqType(stream, &exiDoc->ConnectChargingDeviceReq);
				exiDoc->ConnectChargingDeviceReq_isUsed = 1u;
				break;
			case 23:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ConnectChargingDeviceRes) */
				errn = decode_iso2ConnectChargingDeviceResType(stream, &exiDoc->ConnectChargingDeviceRes);
				exiDoc->ConnectChargingDeviceRes_isUsed = 1u;
				break;
			case 24:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}CurrentDemandReq) */
				errn = decode_iso2CurrentDemandReqType(stream, &exiDoc->CurrentDemandReq);
				exiDoc->CurrentDemandReq_isUsed = 1u;
				break;
			case 25:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}CurrentDemandRes) */
				errn = decode_iso2CurrentDemandResType(stream, &exiDoc->CurrentDemandRes);
				exiDoc->CurrentDemandRes_isUsed = 1u;
				break;
			case 26:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}DC_BidirectionalControlReq) */
				errn = decode_iso2DC_BidirectionalControlReqType(stream, &exiDoc->DC_BidirectionalControlReq);
				exiDoc->DC_BidirectionalControlReq_isUsed = 1u;
				break;
			case 27:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}DC_BidirectionalControlRes) */
				errn = decode_iso2DC_BidirectionalControlResType(stream, &exiDoc->DC_BidirectionalControlRes);
				exiDoc->DC_BidirectionalControlRes_isUsed = 1u;
				break;
			case 28:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}DC_EVBidirectionalParameter) */
				errn = decode_iso2DC_EVBidirectionalParameterType(stream, &exiDoc->DC_EVBidirectionalParameter);
				exiDoc->DC_EVBidirectionalParameter_isUsed = 1u;
				break;
			case 29:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}DC_EVChargeParameter) */
				errn = decode_iso2DC_EVChargeParameterType(stream, &exiDoc->DC_EVChargeParameter);
				exiDoc->DC_EVChargeParameter_isUsed = 1u;
				break;
			case 30:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}DC_EVSEBidirectionalParameter) */
				errn = decode_iso2DC_EVSEBidirectionalParameterType(stream, &exiDoc->DC_EVSEBidirectionalParameter);
				exiDoc->DC_EVSEBidirectionalParameter_isUsed = 1u;
				break;
			case 31:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}DC_EVSEChargeParameter) */
				errn = decode_iso2DC_EVSEChargeParameterType(stream, &exiDoc->DC_EVSEChargeParameter);
				exiDoc->DC_EVSEChargeParameter_isUsed = 1u;
				break;
			case 32:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue) */
				errn = decode_iso2DSAKeyValueType(stream, &exiDoc->DSAKeyValue);
				exiDoc->DSAKeyValue_isUsed = 1u;
				break;
			case 33:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod) */
				errn = decode_iso2DigestMethodType(stream, &exiDoc->DigestMethod);
				exiDoc->DigestMethod_isUsed = 1u;
				break;
			case 34:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue) */
				/* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeUnsignedInteger16(stream, &exiDoc->DigestValue.bytesLen);
						if (errn == 0) {
							errn =  (exiDoc->DigestValue.bytesLen) <= iso2EXIDocument_DigestValue_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
						}
						if (errn == 0) {
							errn = decodeBytes(stream, exiDoc->DigestValue.bytesLen, exiDoc->DigestValue.bytes);
						}
						exiDoc->DigestValue_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 35:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}DisconnectChargingDeviceReq) */
				errn = decode_iso2DisconnectChargingDeviceReqType(stream, &exiDoc->DisconnectChargingDeviceReq);
				exiDoc->DisconnectChargingDeviceReq_isUsed = 1u;
				break;
			case 36:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}DisconnectChargingDeviceRes) */
				errn = decode_iso2DisconnectChargingDeviceResType(stream, &exiDoc->DisconnectChargingDeviceRes);
				exiDoc->DisconnectChargingDeviceRes_isUsed = 1u;
				break;
			case 37:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVEnergyTransferParameter) */
				errn = decode_iso2EVEnergyTransferParameterType(stream, &exiDoc->EVEnergyTransferParameter);
				exiDoc->EVEnergyTransferParameter_isUsed = 1u;
				break;
			case 38:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVFinePositioningParameters) */
				errn = decode_iso2EVFinePositioningParametersType(stream, &exiDoc->EVFinePositioningParameters);
				exiDoc->EVFinePositioningParameters_isUsed = 1u;
				break;
			case 39:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVFinePositioningSetupParameters) */
				errn = decode_iso2EVFinePositioningSetupParametersType(stream, &exiDoc->EVFinePositioningSetupParameters);
				exiDoc->EVFinePositioningSetupParameters_isUsed = 1u;
				break;
			case 40:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEEnergyTransferParameter) */
				errn = decode_iso2EVSEEnergyTransferParameterType(stream, &exiDoc->EVSEEnergyTransferParameter);
				exiDoc->EVSEEnergyTransferParameter_isUsed = 1u;
				break;
			case 41:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEFinePositioningParameters) */
				errn = decode_iso2EVSEFinePositioningParametersType(stream, &exiDoc->EVSEFinePositioningParameters);
				exiDoc->EVSEFinePositioningParameters_isUsed = 1u;
				break;
			case 42:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEFinePositioningSetupParameters) */
				errn = decode_iso2EVSEFinePositioningSetupParametersType(stream, &exiDoc->EVSEFinePositioningSetupParameters);
				exiDoc->EVSEFinePositioningSetupParameters_isUsed = 1u;
				break;
			case 43:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}FinePositioningReq) */
				errn = decode_iso2FinePositioningReqType(stream, &exiDoc->FinePositioningReq);
				exiDoc->FinePositioningReq_isUsed = 1u;
				break;
			case 44:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}FinePositioningRes) */
				errn = decode_iso2FinePositioningResType(stream, &exiDoc->FinePositioningRes);
				exiDoc->FinePositioningRes_isUsed = 1u;
				break;
			case 45:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}FinePositioningSetupReq) */
				errn = decode_iso2FinePositioningSetupReqType(stream, &exiDoc->FinePositioningSetupReq);
				exiDoc->FinePositioningSetupReq_isUsed = 1u;
				break;
			case 46:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}FinePositioningSetupRes) */
				errn = decode_iso2FinePositioningSetupResType(stream, &exiDoc->FinePositioningSetupRes);
				exiDoc->FinePositioningSetupRes_isUsed = 1u;
				break;
			case 47:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Generic_EVFinePositioningParameters) */
				errn = decode_iso2Generic_EVFinePositioningParametersType(stream, &exiDoc->Generic_EVFinePositioningParameters);
				exiDoc->Generic_EVFinePositioningParameters_isUsed = 1u;
				break;
			case 48:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Generic_EVSEFinePositioningParameters) */
				errn = decode_iso2Generic_EVSEFinePositioningParametersType(stream, &exiDoc->Generic_EVSEFinePositioningParameters);
				exiDoc->Generic_EVSEFinePositioningParameters_isUsed = 1u;
				break;
			case 49:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyInfo) */
				errn = decode_iso2KeyInfoType(stream, &exiDoc->KeyInfo);
				exiDoc->KeyInfo_isUsed = 1u;
				break;
			case 50:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName) */
				/* First(xsi:type)StartTag[CHARACTERS[STRING]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeUnsignedInteger16(stream, &exiDoc->KeyName.charactersLen);
						if (errn == 0) {
							if (exiDoc->KeyName.charactersLen >= 2) {
								exiDoc->KeyName.charactersLen = (uint16_t)(exiDoc->KeyName.charactersLen - 2); /* string table miss */
								errn = decodeCharacters(stream, exiDoc->KeyName.charactersLen, exiDoc->KeyName.characters, iso2EXIDocument_KeyName_CHARACTERS_SIZE);
							} else {
								/* string table hit */
								errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
							}
						}
						exiDoc->KeyName_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 51:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue) */
				errn = decode_iso2KeyValueType(stream, &exiDoc->KeyValue);
				exiDoc->KeyValue_isUsed = 1u;
				break;
			case 52:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}LFA_EVFinePositioningParameters) */
				errn = decode_iso2LFA_EVFinePositioningParametersType(stream, &exiDoc->LFA_EVFinePositioningParameters);
				exiDoc->LFA_EVFinePositioningParameters_isUsed = 1u;
				break;
			case 53:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}LFA_EVFinePositioningSetupParameters) */
				errn = decode_iso2LFA_EVFinePositioningSetupParametersType(stream, &exiDoc->LFA_EVFinePositioningSetupParameters);
				exiDoc->LFA_EVFinePositioningSetupParameters_isUsed = 1u;
				break;
			case 54:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}LFA_EVSEFinePositioningParameters) */
				errn = decode_iso2LFA_EVSEFinePositioningParametersType(stream, &exiDoc->LFA_EVSEFinePositioningParameters);
				exiDoc->LFA_EVSEFinePositioningParameters_isUsed = 1u;
				break;
			case 55:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}LFA_EVSEFinePositioningSetupParameters) */
				errn = decode_iso2LFA_EVSEFinePositioningSetupParametersType(stream, &exiDoc->LFA_EVSEFinePositioningSetupParameters);
				exiDoc->LFA_EVSEFinePositioningSetupParameters_isUsed = 1u;
				break;
			case 56:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MV_EVSEFinePositioningParameters) */
				errn = decode_iso2MV_EVSEFinePositioningParametersType(stream, &exiDoc->MV_EVSEFinePositioningParameters);
				exiDoc->MV_EVSEFinePositioningParameters_isUsed = 1u;
				break;
			case 57:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MV_EVSEFinePositioningSetupParameters) */
				errn = decode_iso2MV_EVSEFinePositioningSetupParametersType(stream, &exiDoc->MV_EVSEFinePositioningSetupParameters);
				exiDoc->MV_EVSEFinePositioningSetupParameters_isUsed = 1u;
				break;
			case 58:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Manifest) */
				errn = decode_iso2ManifestType(stream, &exiDoc->Manifest);
				exiDoc->Manifest_isUsed = 1u;
				break;
			case 59:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}MeteringReceiptReq) */
				errn = decode_iso2MeteringReceiptReqType(stream, &exiDoc->MeteringReceiptReq);
				exiDoc->MeteringReceiptReq_isUsed = 1u;
				break;
			case 60:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}MeteringReceiptRes) */
				errn = decode_iso2MeteringReceiptResType(stream, &exiDoc->MeteringReceiptRes);
				exiDoc->MeteringReceiptRes_isUsed = 1u;
				break;
			case 61:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData) */
				/* First(xsi:type)StartTag[CHARACTERS[STRING]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeUnsignedInteger16(stream, &exiDoc->MgmtData.charactersLen);
						if (errn == 0) {
							if (exiDoc->MgmtData.charactersLen >= 2) {
								exiDoc->MgmtData.charactersLen = (uint16_t)(exiDoc->MgmtData.charactersLen - 2); /* string table miss */
								errn = decodeCharacters(stream, exiDoc->MgmtData.charactersLen, exiDoc->MgmtData.characters, iso2EXIDocument_MgmtData_CHARACTERS_SIZE);
							} else {
								/* string table hit */
								errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
							}
						}
						exiDoc->MgmtData_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 62:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object) */
				errn = decode_iso2ObjectType(stream, &exiDoc->Object);
				exiDoc->Object_isUsed = 1u;
				break;
			case 63:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData) */
				errn = decode_iso2PGPDataType(stream, &exiDoc->PGPData);
				exiDoc->PGPData_isUsed = 1u;
				break;
			case 64:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}PMaxScheduleEntry) */
				errn = decode_iso2PMaxScheduleEntryType(stream, &exiDoc->PMaxScheduleEntry);
				exiDoc->PMaxScheduleEntry_isUsed = 1u;
				break;
			case 65:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PairingReq) */
				errn = decode_iso2PairingReqType(stream, &exiDoc->PairingReq);
				exiDoc->PairingReq_isUsed = 1u;
				break;
			case 66:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PairingRes) */
				errn = decode_iso2PairingResType(stream, &exiDoc->PairingRes);
				exiDoc->PairingRes_isUsed = 1u;
				break;
			case 67:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PaymentDetailsReq) */
				errn = decode_iso2PaymentDetailsReqType(stream, &exiDoc->PaymentDetailsReq);
				exiDoc->PaymentDetailsReq_isUsed = 1u;
				break;
			case 68:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PaymentDetailsRes) */
				errn = decode_iso2PaymentDetailsResType(stream, &exiDoc->PaymentDetailsRes);
				exiDoc->PaymentDetailsRes_isUsed = 1u;
				break;
			case 69:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PaymentServiceSelectionReq) */
				errn = decode_iso2PaymentServiceSelectionReqType(stream, &exiDoc->PaymentServiceSelectionReq);
				exiDoc->PaymentServiceSelectionReq_isUsed = 1u;
				break;
			case 70:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PaymentServiceSelectionRes) */
				errn = decode_iso2PaymentServiceSelectionResType(stream, &exiDoc->PaymentServiceSelectionRes);
				exiDoc->PaymentServiceSelectionRes_isUsed = 1u;
				break;
			case 71:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PowerDeliveryReq) */
				errn = decode_iso2PowerDeliveryReqType(stream, &exiDoc->PowerDeliveryReq);
				exiDoc->PowerDeliveryReq_isUsed = 1u;
				break;
			case 72:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PowerDeliveryRes) */
				errn = decode_iso2PowerDeliveryResType(stream, &exiDoc->PowerDeliveryRes);
				exiDoc->PowerDeliveryRes_isUsed = 1u;
				break;
			case 73:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PowerDemandReq) */
				errn = decode_iso2PowerDemandReqType(stream, &exiDoc->PowerDemandReq);
				exiDoc->PowerDemandReq_isUsed = 1u;
				break;
			case 74:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PowerDemandRes) */
				errn = decode_iso2PowerDemandResType(stream, &exiDoc->PowerDemandRes);
				exiDoc->PowerDemandRes_isUsed = 1u;
				break;
			case 75:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PreChargeReq) */
				errn = decode_iso2PreChargeReqType(stream, &exiDoc->PreChargeReq);
				exiDoc->PreChargeReq_isUsed = 1u;
				break;
			case 76:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PreChargeRes) */
				errn = decode_iso2PreChargeResType(stream, &exiDoc->PreChargeRes);
				exiDoc->PreChargeRes_isUsed = 1u;
				break;
			case 77:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue) */
				errn = decode_iso2RSAKeyValueType(stream, &exiDoc->RSAKeyValue);
				exiDoc->RSAKeyValue_isUsed = 1u;
				break;
			case 78:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference) */
				errn = decode_iso2ReferenceType(stream, &exiDoc->Reference);
				exiDoc->Reference_isUsed = 1u;
				break;
			case 79:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RelativeTimeInterval) */
				errn = decode_iso2RelativeTimeIntervalType(stream, &exiDoc->RelativeTimeInterval);
				exiDoc->RelativeTimeInterval_isUsed = 1u;
				break;
			case 80:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod) */
				errn = decode_iso2RetrievalMethodType(stream, &exiDoc->RetrievalMethod);
				exiDoc->RetrievalMethod_isUsed = 1u;
				break;
			case 81:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SAScheduleList) */
				errn = decode_iso2SAScheduleListType(stream, &exiDoc->SAScheduleList);
				exiDoc->SAScheduleList_isUsed = 1u;
				break;
			case 82:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData) */
				errn = decode_iso2SPKIDataType(stream, &exiDoc->SPKIData);
				exiDoc->SPKIData_isUsed = 1u;
				break;
			case 83:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SalesTariffEntry) */
				errn = decode_iso2SalesTariffEntryType(stream, &exiDoc->SalesTariffEntry);
				exiDoc->SalesTariffEntry_isUsed = 1u;
				break;
			case 84:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ServiceDetailReq) */
				errn = decode_iso2ServiceDetailReqType(stream, &exiDoc->ServiceDetailReq);
				exiDoc->ServiceDetailReq_isUsed = 1u;
				break;
			case 85:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ServiceDetailRes) */
				errn = decode_iso2ServiceDetailResType(stream, &exiDoc->ServiceDetailRes);
				exiDoc->ServiceDetailRes_isUsed = 1u;
				break;
			case 86:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ServiceDiscoveryReq) */
				errn = decode_iso2ServiceDiscoveryReqType(stream, &exiDoc->ServiceDiscoveryReq);
				exiDoc->ServiceDiscoveryReq_isUsed = 1u;
				break;
			case 87:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ServiceDiscoveryRes) */
				errn = decode_iso2ServiceDiscoveryResType(stream, &exiDoc->ServiceDiscoveryRes);
				exiDoc->ServiceDiscoveryRes_isUsed = 1u;
				break;
			case 88:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SessionSetupReq) */
				errn = decode_iso2SessionSetupReqType(stream, &exiDoc->SessionSetupReq);
				exiDoc->SessionSetupReq_isUsed = 1u;
				break;
			case 89:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SessionSetupRes) */
				errn = decode_iso2SessionSetupResType(stream, &exiDoc->SessionSetupRes);
				exiDoc->SessionSetupRes_isUsed = 1u;
				break;
			case 90:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SessionStopReq) */
				errn = decode_iso2SessionStopReqType(stream, &exiDoc->SessionStopReq);
				exiDoc->SessionStopReq_isUsed = 1u;
				break;
			case 91:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SessionStopRes) */
				errn = decode_iso2SessionStopResType(stream, &exiDoc->SessionStopRes);
				exiDoc->SessionStopRes_isUsed = 1u;
				break;
			case 92:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature) */
				errn = decode_iso2SignatureType(stream, &exiDoc->Signature);
				exiDoc->Signature_isUsed = 1u;
				break;
			case 93:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureMethod) */
				errn = decode_iso2SignatureMethodType(stream, &exiDoc->SignatureMethod);
				exiDoc->SignatureMethod_isUsed = 1u;
				break;
			case 94:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperties) */
				errn = decode_iso2SignaturePropertiesType(stream, &exiDoc->SignatureProperties);
				exiDoc->SignatureProperties_isUsed = 1u;
				break;
			case 95:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty) */
				errn = decode_iso2SignaturePropertyType(stream, &exiDoc->SignatureProperty);
				exiDoc->SignatureProperty_isUsed = 1u;
				break;
			case 96:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureValue) */
				errn = decode_iso2SignatureValueType(stream, &exiDoc->SignatureValue);
				exiDoc->SignatureValue_isUsed = 1u;
				break;
			case 97:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo) */
				errn = decode_iso2SignedInfoType(stream, &exiDoc->SignedInfo);
				exiDoc->SignedInfo_isUsed = 1u;
				break;
			case 98:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SystemStatusReq) */
				errn = decode_iso2SystemStatusReqType(stream, &exiDoc->SystemStatusReq);
				exiDoc->SystemStatusReq_isUsed = 1u;
				break;
			case 99:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SystemStatusRes) */
				errn = decode_iso2SystemStatusResType(stream, &exiDoc->SystemStatusRes);
				exiDoc->SystemStatusRes_isUsed = 1u;
				break;
			case 100:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform) */
				errn = decode_iso2TransformType(stream, &exiDoc->Transform);
				exiDoc->Transform_isUsed = 1u;
				break;
			case 101:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms) */
				errn = decode_iso2TransformsType(stream, &exiDoc->Transforms);
				exiDoc->Transforms_isUsed = 1u;
				break;
			case 102:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}V2GRequest) */
				errn = decode_iso2BodyBaseType(stream, &exiDoc->V2GRequest);
				exiDoc->V2GRequest_isUsed = 1u;
				break;
			case 103:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}V2GResponse) */
				errn = decode_iso2V2GResponseType(stream, &exiDoc->V2GResponse);
				exiDoc->V2GResponse_isUsed = 1u;
				break;
			case 104:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDef}V2G_Message) */
				errn = decode_iso2AnonType_V2G_Message(stream, &exiDoc->V2G_Message);
				exiDoc->V2G_Message_isUsed = 1u;
				break;
			case 105:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}VehicleCheckInReq) */
				errn = decode_iso2VehicleCheckInReqType(stream, &exiDoc->VehicleCheckInReq);
				exiDoc->VehicleCheckInReq_isUsed = 1u;
				break;
			case 106:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}VehicleCheckInRes) */
				errn = decode_iso2VehicleCheckInResType(stream, &exiDoc->VehicleCheckInRes);
				exiDoc->VehicleCheckInRes_isUsed = 1u;
				break;
			case 107:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}VehicleCheckOutReq) */
				errn = decode_iso2VehicleCheckOutReqType(stream, &exiDoc->VehicleCheckOutReq);
				exiDoc->VehicleCheckOutReq_isUsed = 1u;
				break;
			case 108:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}VehicleCheckOutRes) */
				errn = decode_iso2VehicleCheckOutResType(stream, &exiDoc->VehicleCheckOutRes);
				exiDoc->VehicleCheckOutRes_isUsed = 1u;
				break;
			case 109:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}WPT_EVChargeParameter) */
				errn = decode_iso2WPT_EVChargeParameterType(stream, &exiDoc->WPT_EVChargeParameter);
				exiDoc->WPT_EVChargeParameter_isUsed = 1u;
				break;
			case 110:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}WPT_EVSEChargeParameter) */
				errn = decode_iso2WPT_EVSEChargeParameterType(stream, &exiDoc->WPT_EVSEChargeParameter);
				exiDoc->WPT_EVSEChargeParameter_isUsed = 1u;
				break;
			case 111:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}WeldingDetectionReq) */
				errn = decode_iso2WeldingDetectionReqType(stream, &exiDoc->WeldingDetectionReq);
				exiDoc->WeldingDetectionReq_isUsed = 1u;
				break;
			case 112:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}WeldingDetectionRes) */
				errn = decode_iso2WeldingDetectionResType(stream, &exiDoc->WeldingDetectionRes);
				exiDoc->WeldingDetectionRes_isUsed = 1u;
				break;
			case 113:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data) */
				errn = decode_iso2X509DataType(stream, &exiDoc->X509Data);
				exiDoc->X509Data_isUsed = 1u;
				break;
			default:
				errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1;
				break;
			}
		}

	}

	(void)exiDoc; /* avoid unused warning */
	(void)eventCode; /* avoid unused warning */
	(void)uint32; /* avoid unused warning */

	return errn;
}

#if DEPLOY_ISO2_CODEC_FRAGMENT == SUPPORT_YES
int decode_iso2ExiFragment(bitstream_t* stream, struct iso2EXIFragment* exiFrag) {
	errn = readEXIHeader(stream);

	if(errn == 0) {
		/* FragmentContent[START_ELEMENT({urn:iso:15118:2:2016:MsgBody}AC_BidirectionalControlReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}AC_BidirectionalControlRes), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}AC_EVBidirectionalParameter), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}AC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}AC_EVSEBidirectionalParameter), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}AC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}AlignmentCheckParameters), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}AlignmentCheckReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}AlignmentCheckRes), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}AlignmentOffset), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}AngleGAtoVA), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}AuthorizationReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}AuthorizationRes), START_ELEMENT({urn:iso:15118:2:2016:MsgDef}Body), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}BodyElement), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BulkChargingComplete), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BulkSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BuyBackTariff), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}CableCheckReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}CableCheckRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Certificate), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}CertificateInstallationReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}CertificateInstallationRes), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}CertificateUpdateReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}CertificateUpdateRes), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ChargeParameterDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ChargeParameterDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ChargeProgress), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ChargingComplete), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ChargingPerformance), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ChargingProfile), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ChargingSession), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ChargingStatusReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ChargingStatusRes), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}CheckOutTime), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ConnectChargingDeviceReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ConnectChargingDeviceRes), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ConsumptionCost), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ContractSignatureCertChain), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ContractSignatureEncryptedPrivateKey), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Cost), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}CurrentDemandReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}CurrentDemandRes), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}CurrentRange), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}CurrentSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}DC_BidirectionalControlReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}DC_BidirectionalControlRes), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}DC_EVBidirectionalParameter), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}DC_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}DC_EVSEBidirectionalParameter), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}DC_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}DHpublickey), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}DepartureTime), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}DisconnectChargingDeviceReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}DisconnectChargingDeviceRes), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}DisplayParameters), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Distance), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EPriceLevel), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVCCID), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVCheckInStatus), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVCheckOutStatus), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVElectricalChargingDeviceStatus), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVEnergyTransferParameter), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVFinePositioningParameters), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVFinePositioningSetupParameters), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVInputPower), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMaximumChargeCurrent), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumChargeCurrent), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMaximumChargePower), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumChargePower), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMaximumCurrent), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMaximumDischargeCurrent), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumDischargeCurrent), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMaximumDischargePower), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumDischargePower), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMaximumEnergyRequest), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumEnergyRequest), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMaximumPower), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumPower), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMaximumVoltage), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumVoltage), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMechanicalChargingDeviceStatus), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMinimumChargeCurrent), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMinimumChargeCurrent), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMinimumChargePower), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMinimumDischargeCurrent), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMinimumDischargeCurrent), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMinimumDischargePower), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMinimumEnergyRequest), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMinimumEnergyRequest), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMinimumPower), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMinimumVoltage), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMinimumVoltage), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVOperation), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVPresentActivePower), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVPresentReactivePower), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVProcessing), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSECheckOutStatus), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSECurrentLimitAchieved), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSECurrentRegulationTolerance), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEElectricalChargingDeviceStatus), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEEnergyToBeDelivered), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEEnergyTransferParameter), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEFinePositioningParameters), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEFinePositioningSetupParameters), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEID), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEMaximumChargeCurrent), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEMaximumChargeCurrent), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEMaximumChargePower), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEMaximumChargePower), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEMaximumCurrent), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEMaximumDischargeCurrent), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEMaximumDischargeCurrent), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEMaximumDischargePower), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEMaximumDischargePower), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEMaximumPower), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEMaximumPower), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEMaximumVoltage), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEMaximumVoltage), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEMechanicalChargingDeviceStatus), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEMinimumChargeCurrent), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEMinimumDischargeCurrent), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEMinimumPower), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEMinimumVoltage), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEMinimumVoltage), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSENominalFrequency), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSENominalVoltage), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSENotification), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEOutputPower), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEPeakCurrentRipple), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEPowerLimitAchieved), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEPresentCurrent), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEPresentVoltage), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEProcessing), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEStatus), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSETargetPower), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSETargetReactivePower), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSETimeStamp), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEVoltageLimitAchieved), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVTargetCurrent), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVTargetEnergyRequest), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVTargetEnergyRequest), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVTargetPower), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVTargetVoltage), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EffectiveRadiatedPower), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EnergyTransferServiceList), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Exponent), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Exponent), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}FODStatus), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}FinePositioningReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}FinePositioningRes), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}FinePositioningSetupReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}FinePositioningSetupRes), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}FreeService), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}FrequencyChannel), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}GAID), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}GenChallenge), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}GenericParameters), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Generic_EVFinePositioningParameters), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Generic_EVSEFinePositioningParameters), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength), START_ELEMENT({urn:iso:15118:2:2016:MsgDef}Header), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}InletHot), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}J), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyInfo), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}LFA_EVFinePositioningParameters), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}LFA_EVFinePositioningSetupParameters), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}LFA_EVSEFinePositioningParameters), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}LFA_EVSEFinePositioningSetupParameters), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ListOfRootCertificateIDs), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MV_EVSEFinePositioningParameters), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MV_EVSEFinePositioningSetupParameters), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorList), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetupList), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Manifest), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}MaxSupportingPoints), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementDataList), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeterID), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}MeterInfo), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeterReadingCharged), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeterReadingDischarged), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}MeteringReceiptRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}MinimumPMaxRequest), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MinimumPMaxScheduleEntry), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MinimumSOC), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Modulus), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}NotificationMaxDelay), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}NumEPriceLevels), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}NumberOfSensors), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}NumberOfSignalPackages), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}OEMProvisioningCert), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}OperationMode), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}P), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}PMax), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}PMaxDischargeSchedule), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}PMaxSchedule), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}PMaxScheduleEntry), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}PackageIndex), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}PackageSeparationTime), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PairingParameters), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PairingReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PairingRes), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Parameter), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSetID), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ParkingMethod), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}PaymentOption), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PaymentOptionList), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PaymentServiceSelectionReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PaymentServiceSelectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PgenCounter), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PowerDemandParameters), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PowerDemandReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PowerDemandRes), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PreChargeReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PreChargeRes), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ProfileEntry), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Q), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ReceiptRequired), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RelativeTimeInterval), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RemainingTimeToBulkSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RemainingTimeToMinimumSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RemainingTimeToTargetSOC), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}RetryCounter), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RootCertificateID), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RotationVAtoGA), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SAProvisioningCertificateChain), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SAScheduleList), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SAScheduleList), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SAScheduleTuple), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SAScheduleTupleID), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SAScheduleTupleID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SalesTariff), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SalesTariffDescription), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SalesTariffEntry), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SalesTariffID), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SelectedEnergyTransferService), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SelectedPaymentOption), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SelectedService), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SelectedVASList), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorID), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorList), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorOrder), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorOrientation), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackageList), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Service), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ServiceDetailReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ServiceDetailRes), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ServiceID), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ServiceID), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ServiceParameterList), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SessionID), START_ELEMENT({urn:iso:15118:2:2016:MsgHeader}SessionID), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SessionStopReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SessionStopRes), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SigMeterReading), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SignalFrequency), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SignalPulseDuration), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SignalSeparationTime), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureMethod), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperties), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureValue), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SubCertificates), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SupportedServiceIDs), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SystemStatusReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SystemStatusRes), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}TMeter), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}TargetOffset), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}TargetOffsetX), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}TargetOffsetY), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}TargetSOC), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}V2GRequest), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}V2GResponse), START_ELEMENT({urn:iso:15118:2:2016:MsgDef}V2G_Message), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}VASList), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Value), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}VehicleCheckInReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}VehicleCheckInRes), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}VehicleCheckOutReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}VehicleCheckOutRes), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}VehicleSpace), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}WPT_EVChargeParameter), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}WPT_EVSEChargeParameter), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}WeldingDetectionReq), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}WeldingDetectionRes), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerName), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SerialNumber), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}XCoordinate), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath), START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}YCoordinate), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ZCoordinate), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}amount), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}boolValue), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}byteValue), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}costKind), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}duration), START_ELEMENT({urn:iso:15118:2:2016:MsgBody}eMAID), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}intValue), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}physicalValue), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}shortValue), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}start), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}startValue), START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}stringValue), START_ELEMENT_GENERIC, END_DOCUMENT] */
		init_iso2EXIFragment(exiFrag);
		errn = decodeNBitUnsignedInteger(stream, 9, &eventCode);
		if(errn == 0) {
			switch(eventCode) {
			case 0:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}AC_BidirectionalControlReq) */
				errn = decode_iso2AC_BidirectionalControlReqType(stream, &exiFrag->AC_BidirectionalControlReq);
				exiFrag->AC_BidirectionalControlReq_isUsed = 1u;
				break;
			case 1:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}AC_BidirectionalControlRes) */
				errn = decode_iso2AC_BidirectionalControlResType(stream, &exiFrag->AC_BidirectionalControlRes);
				exiFrag->AC_BidirectionalControlRes_isUsed = 1u;
				break;
			case 2:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}AC_EVBidirectionalParameter) */
				errn = decode_iso2AC_EVBidirectionalParameterType(stream, &exiFrag->AC_EVBidirectionalParameter);
				exiFrag->AC_EVBidirectionalParameter_isUsed = 1u;
				break;
			case 3:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}AC_EVChargeParameter) */
				errn = decode_iso2AC_EVChargeParameterType(stream, &exiFrag->AC_EVChargeParameter);
				exiFrag->AC_EVChargeParameter_isUsed = 1u;
				break;
			case 4:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}AC_EVSEBidirectionalParameter) */
				errn = decode_iso2AC_EVSEBidirectionalParameterType(stream, &exiFrag->AC_EVSEBidirectionalParameter);
				exiFrag->AC_EVSEBidirectionalParameter_isUsed = 1u;
				break;
			case 5:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}AC_EVSEChargeParameter) */
				errn = decode_iso2AC_EVSEChargeParameterType(stream, &exiFrag->AC_EVSEChargeParameter);
				exiFrag->AC_EVSEChargeParameter_isUsed = 1u;
				break;
			case 6:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}AlignmentCheckParameters) */
				errn = decode_iso2ParameterSetType(stream, &exiFrag->AlignmentCheckParameters);
				exiFrag->AlignmentCheckParameters_isUsed = 1u;
				break;
			case 7:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}AlignmentCheckReq) */
				errn = decode_iso2AlignmentCheckReqType(stream, &exiFrag->AlignmentCheckReq);
				exiFrag->AlignmentCheckReq_isUsed = 1u;
				break;
			case 8:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}AlignmentCheckRes) */
				errn = decode_iso2AlignmentCheckResType(stream, &exiFrag->AlignmentCheckRes);
				exiFrag->AlignmentCheckRes_isUsed = 1u;
				break;
			case 9:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}AlignmentOffset) */
				/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeUnsignedInteger16(stream, &exiFrag->AlignmentOffset);
						exiFrag->AlignmentOffset_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 10:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}AngleGAtoVA) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->AngleGAtoVA);
				exiFrag->AngleGAtoVA_isUsed = 1u;
				break;
			case 11:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}AuthorizationReq) */
				errn = decode_iso2AuthorizationReqType(stream, &exiFrag->AuthorizationReq);
				exiFrag->AuthorizationReq_isUsed = 1u;
				break;
			case 12:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}AuthorizationRes) */
				errn = decode_iso2AuthorizationResType(stream, &exiFrag->AuthorizationRes);
				exiFrag->AuthorizationRes_isUsed = 1u;
				break;
			case 13:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDef}Body) */
				errn = decode_iso2BodyType(stream, &exiFrag->Body);
				exiFrag->Body_isUsed = 1u;
				break;
			case 14:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}BodyElement) */
				errn = decode_iso2BodyBaseType(stream, &exiFrag->BodyElement);
				exiFrag->BodyElement_isUsed = 1u;
				break;
			case 15:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BulkChargingComplete) */
				/* FirstStartTag[CHARACTERS[BOOLEAN]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeBoolean(stream, &exiFrag->BulkChargingComplete);
						exiFrag->BulkChargingComplete_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 16:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BulkSOC) */
				/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
						exiFrag->BulkSOC = (int8_t)(uint32 + 0);
						exiFrag->BulkSOC_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 17:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}BuyBackTariff) */
				errn = decode_iso2SalesTariffType(stream, &exiFrag->BuyBackTariff);
				exiFrag->BuyBackTariff_isUsed = 1u;
				break;
			case 18:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}CableCheckReq) */
				errn = decode_iso2CableCheckReqType(stream, &exiFrag->CableCheckReq);
				exiFrag->CableCheckReq_isUsed = 1u;
				break;
			case 19:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}CableCheckRes) */
				errn = decode_iso2CableCheckResType(stream, &exiFrag->CableCheckRes);
				exiFrag->CableCheckRes_isUsed = 1u;
				break;
			case 20:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod) */
				errn = decode_iso2CanonicalizationMethodType(stream, &exiFrag->CanonicalizationMethod);
				exiFrag->CanonicalizationMethod_isUsed = 1u;
				break;
			case 21:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Certificate) */
				/* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeUnsignedInteger16(stream, &exiFrag->Certificate.bytesLen);
						if (errn == 0) {
							errn =  (exiFrag->Certificate.bytesLen) <= iso2EXIFragment_Certificate_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
						}
						if (errn == 0) {
							errn = decodeBytes(stream, exiFrag->Certificate.bytesLen, exiFrag->Certificate.bytes);
						}
						exiFrag->Certificate_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 22:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}CertificateInstallationReq) */
				errn = decode_iso2CertificateInstallationReqType(stream, &exiFrag->CertificateInstallationReq);
				exiFrag->CertificateInstallationReq_isUsed = 1u;
				break;
			case 23:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}CertificateInstallationRes) */
				errn = decode_iso2CertificateInstallationResType(stream, &exiFrag->CertificateInstallationRes);
				exiFrag->CertificateInstallationRes_isUsed = 1u;
				break;
			case 24:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}CertificateUpdateReq) */
				errn = decode_iso2CertificateUpdateReqType(stream, &exiFrag->CertificateUpdateReq);
				exiFrag->CertificateUpdateReq_isUsed = 1u;
				break;
			case 25:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}CertificateUpdateRes) */
				errn = decode_iso2CertificateUpdateResType(stream, &exiFrag->CertificateUpdateRes);
				exiFrag->CertificateUpdateRes_isUsed = 1u;
				break;
			case 26:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ChargeParameterDiscoveryReq) */
				errn = decode_iso2ChargeParameterDiscoveryReqType(stream, &exiFrag->ChargeParameterDiscoveryReq);
				exiFrag->ChargeParameterDiscoveryReq_isUsed = 1u;
				break;
			case 27:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ChargeParameterDiscoveryRes) */
				errn = decode_iso2ChargeParameterDiscoveryResType(stream, &exiFrag->ChargeParameterDiscoveryRes);
				exiFrag->ChargeParameterDiscoveryRes_isUsed = 1u;
				break;
			case 28:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ChargeProgress) */
				/* FirstStartTag[CHARACTERS[ENUMERATION]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
						exiFrag->ChargeProgress = (iso2chargeProgressType) uint32;
						exiFrag->ChargeProgress_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 29:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ChargingComplete) */
				/* FirstStartTag[CHARACTERS[BOOLEAN]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeBoolean(stream, &exiFrag->ChargingComplete);
						exiFrag->ChargingComplete_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 30:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ChargingPerformance) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->ChargingPerformance);
				exiFrag->ChargingPerformance_isUsed = 1u;
				break;
			case 31:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ChargingProfile) */
				errn = decode_iso2ChargingProfileType(stream, &exiFrag->ChargingProfile);
				exiFrag->ChargingProfile_isUsed = 1u;
				break;
			case 32:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ChargingSession) */
				/* FirstStartTag[CHARACTERS[ENUMERATION]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeNBitUnsignedInteger(stream, 1, &uint32);
						exiFrag->ChargingSession = (iso2chargingSessionType) uint32;
						exiFrag->ChargingSession_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 33:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ChargingStatusReq) */
				errn = decode_iso2ChargingStatusReqType(stream, &exiFrag->ChargingStatusReq);
				exiFrag->ChargingStatusReq_isUsed = 1u;
				break;
			case 34:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ChargingStatusRes) */
				errn = decode_iso2ChargingStatusResType(stream, &exiFrag->ChargingStatusRes);
				exiFrag->ChargingStatusRes_isUsed = 1u;
				break;
			case 35:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}CheckOutTime) */
				/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeUnsignedInteger64(stream, &exiFrag->CheckOutTime);
						exiFrag->CheckOutTime_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 36:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ConnectChargingDeviceReq) */
				errn = decode_iso2ConnectChargingDeviceReqType(stream, &exiFrag->ConnectChargingDeviceReq);
				exiFrag->ConnectChargingDeviceReq_isUsed = 1u;
				break;
			case 37:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ConnectChargingDeviceRes) */
				errn = decode_iso2ConnectChargingDeviceResType(stream, &exiFrag->ConnectChargingDeviceRes);
				exiFrag->ConnectChargingDeviceRes_isUsed = 1u;
				break;
			case 38:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ConsumptionCost) */
				errn = decode_iso2ConsumptionCostType(stream, &exiFrag->ConsumptionCost);
				exiFrag->ConsumptionCost_isUsed = 1u;
				break;
			case 39:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ContractSignatureCertChain) */
				errn = decode_iso2CertificateChainType(stream, &exiFrag->ContractSignatureCertChain);
				exiFrag->ContractSignatureCertChain_isUsed = 1u;
				break;
			case 40:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ContractSignatureEncryptedPrivateKey) */
				errn = decode_iso2ContractSignatureEncryptedPrivateKeyType(stream, &exiFrag->ContractSignatureEncryptedPrivateKey);
				exiFrag->ContractSignatureEncryptedPrivateKey_isUsed = 1u;
				break;
			case 41:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Cost) */
				errn = decode_iso2CostType(stream, &exiFrag->Cost);
				exiFrag->Cost_isUsed = 1u;
				break;
			case 42:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}CurrentDemandReq) */
				errn = decode_iso2CurrentDemandReqType(stream, &exiFrag->CurrentDemandReq);
				exiFrag->CurrentDemandReq_isUsed = 1u;
				break;
			case 43:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}CurrentDemandRes) */
				errn = decode_iso2CurrentDemandResType(stream, &exiFrag->CurrentDemandRes);
				exiFrag->CurrentDemandRes_isUsed = 1u;
				break;
			case 44:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}CurrentRange) */
				/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeUnsignedInteger16(stream, &exiFrag->CurrentRange);
						exiFrag->CurrentRange_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 45:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}CurrentSOC) */
				/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
						exiFrag->CurrentSOC = (int8_t)(uint32 + 0);
						exiFrag->CurrentSOC_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 46:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}DC_BidirectionalControlReq) */
				errn = decode_iso2DC_BidirectionalControlReqType(stream, &exiFrag->DC_BidirectionalControlReq);
				exiFrag->DC_BidirectionalControlReq_isUsed = 1u;
				break;
			case 47:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}DC_BidirectionalControlRes) */
				errn = decode_iso2DC_BidirectionalControlResType(stream, &exiFrag->DC_BidirectionalControlRes);
				exiFrag->DC_BidirectionalControlRes_isUsed = 1u;
				break;
			case 48:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}DC_EVBidirectionalParameter) */
				errn = decode_iso2DC_EVBidirectionalParameterType(stream, &exiFrag->DC_EVBidirectionalParameter);
				exiFrag->DC_EVBidirectionalParameter_isUsed = 1u;
				break;
			case 49:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}DC_EVChargeParameter) */
				errn = decode_iso2DC_EVChargeParameterType(stream, &exiFrag->DC_EVChargeParameter);
				exiFrag->DC_EVChargeParameter_isUsed = 1u;
				break;
			case 50:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}DC_EVSEBidirectionalParameter) */
				errn = decode_iso2DC_EVSEBidirectionalParameterType(stream, &exiFrag->DC_EVSEBidirectionalParameter);
				exiFrag->DC_EVSEBidirectionalParameter_isUsed = 1u;
				break;
			case 51:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}DC_EVSEChargeParameter) */
				errn = decode_iso2DC_EVSEChargeParameterType(stream, &exiFrag->DC_EVSEChargeParameter);
				exiFrag->DC_EVSEChargeParameter_isUsed = 1u;
				break;
			case 52:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}DHpublickey) */
				errn = decode_iso2DiffieHellmanPublickeyType(stream, &exiFrag->DHpublickey);
				exiFrag->DHpublickey_isUsed = 1u;
				break;
			case 53:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DSAKeyValue) */
				errn = decode_iso2DSAKeyValueType(stream, &exiFrag->DSAKeyValue);
				exiFrag->DSAKeyValue_isUsed = 1u;
				break;
			case 54:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}DepartureTime) */
				/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeUnsignedInteger32(stream, &exiFrag->DepartureTime);
						exiFrag->DepartureTime_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 55:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestMethod) */
				errn = decode_iso2DigestMethodType(stream, &exiFrag->DigestMethod);
				exiFrag->DigestMethod_isUsed = 1u;
				break;
			case 56:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}DigestValue) */
				/* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeUnsignedInteger16(stream, &exiFrag->DigestValue.bytesLen);
						if (errn == 0) {
							errn =  (exiFrag->DigestValue.bytesLen) <= iso2EXIFragment_DigestValue_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
						}
						if (errn == 0) {
							errn = decodeBytes(stream, exiFrag->DigestValue.bytesLen, exiFrag->DigestValue.bytes);
						}
						exiFrag->DigestValue_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 57:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}DisconnectChargingDeviceReq) */
				errn = decode_iso2DisconnectChargingDeviceReqType(stream, &exiFrag->DisconnectChargingDeviceReq);
				exiFrag->DisconnectChargingDeviceReq_isUsed = 1u;
				break;
			case 58:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}DisconnectChargingDeviceRes) */
				errn = decode_iso2DisconnectChargingDeviceResType(stream, &exiFrag->DisconnectChargingDeviceRes);
				exiFrag->DisconnectChargingDeviceRes_isUsed = 1u;
				break;
			case 59:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}DisplayParameters) */
				errn = decode_iso2DisplayParametersType(stream, &exiFrag->DisplayParameters);
				exiFrag->DisplayParameters_isUsed = 1u;
				break;
			case 60:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Distance) */
				/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeUnsignedInteger16(stream, &exiFrag->Distance);
						exiFrag->Distance_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 61:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EPriceLevel) */
				/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
						exiFrag->EPriceLevel = (uint8_t)(uint32 + 0);
						exiFrag->EPriceLevel_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 62:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVCCID) */
				/* FirstStartTag[CHARACTERS[BINARY_HEX]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeUnsignedInteger16(stream, &exiFrag->EVCCID.bytesLen);
						if (errn == 0) {
							errn =  (exiFrag->EVCCID.bytesLen) <= iso2EXIFragment_EVCCID_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
						}
						if (errn == 0) {
							errn = decodeBytes(stream, exiFrag->EVCCID.bytesLen, exiFrag->EVCCID.bytes);
						}
						exiFrag->EVCCID_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 63:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVCheckInStatus) */
				/* FirstStartTag[CHARACTERS[ENUMERATION]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
						exiFrag->EVCheckInStatus = (iso2EVCheckInStatusType) uint32;
						exiFrag->EVCheckInStatus_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 64:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVCheckOutStatus) */
				/* FirstStartTag[CHARACTERS[ENUMERATION]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
						exiFrag->EVCheckOutStatus = (iso2EVCheckOutStatusType) uint32;
						exiFrag->EVCheckOutStatus_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 65:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVElectricalChargingDeviceStatus) */
				/* FirstStartTag[CHARACTERS[ENUMERATION]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeNBitUnsignedInteger(stream, 1, &uint32);
						exiFrag->EVElectricalChargingDeviceStatus = (iso2electricalChargingDeviceStatusType) uint32;
						exiFrag->EVElectricalChargingDeviceStatus_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 66:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVEnergyTransferParameter) */
				errn = decode_iso2EVEnergyTransferParameterType(stream, &exiFrag->EVEnergyTransferParameter);
				exiFrag->EVEnergyTransferParameter_isUsed = 1u;
				break;
			case 67:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVFinePositioningParameters) */
				errn = decode_iso2EVFinePositioningParametersType(stream, &exiFrag->EVFinePositioningParameters);
				exiFrag->EVFinePositioningParameters_isUsed = 1u;
				break;
			case 68:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVFinePositioningSetupParameters) */
				errn = decode_iso2EVFinePositioningSetupParametersType(stream, &exiFrag->EVFinePositioningSetupParameters);
				exiFrag->EVFinePositioningSetupParameters_isUsed = 1u;
				break;
			case 69:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVInputPower) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVInputPower);
				exiFrag->EVInputPower_isUsed = 1u;
				break;
			case 70:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMaximumChargeCurrent) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVMaximumChargeCurrent);
				exiFrag->EVMaximumChargeCurrent_isUsed = 1u;
				break;
			case 71:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumChargeCurrent) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVMaximumChargeCurrent);
				exiFrag->EVMaximumChargeCurrent_isUsed = 1u;
				break;
			case 72:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMaximumChargePower) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVMaximumChargePower);
				exiFrag->EVMaximumChargePower_isUsed = 1u;
				break;
			case 73:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumChargePower) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVMaximumChargePower);
				exiFrag->EVMaximumChargePower_isUsed = 1u;
				break;
			case 74:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMaximumCurrent) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVMaximumCurrent);
				exiFrag->EVMaximumCurrent_isUsed = 1u;
				break;
			case 75:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMaximumDischargeCurrent) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVMaximumDischargeCurrent);
				exiFrag->EVMaximumDischargeCurrent_isUsed = 1u;
				break;
			case 76:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumDischargeCurrent) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVMaximumDischargeCurrent);
				exiFrag->EVMaximumDischargeCurrent_isUsed = 1u;
				break;
			case 77:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMaximumDischargePower) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVMaximumDischargePower);
				exiFrag->EVMaximumDischargePower_isUsed = 1u;
				break;
			case 78:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumDischargePower) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVMaximumDischargePower);
				exiFrag->EVMaximumDischargePower_isUsed = 1u;
				break;
			case 79:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMaximumEnergyRequest) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVMaximumEnergyRequest);
				exiFrag->EVMaximumEnergyRequest_isUsed = 1u;
				break;
			case 80:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumEnergyRequest) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVMaximumEnergyRequest);
				exiFrag->EVMaximumEnergyRequest_isUsed = 1u;
				break;
			case 81:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMaximumPower) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVMaximumPower);
				exiFrag->EVMaximumPower_isUsed = 1u;
				break;
			case 82:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumPower) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVMaximumPower);
				exiFrag->EVMaximumPower_isUsed = 1u;
				break;
			case 83:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMaximumVoltage) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVMaximumVoltage);
				exiFrag->EVMaximumVoltage_isUsed = 1u;
				break;
			case 84:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMaximumVoltage) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVMaximumVoltage);
				exiFrag->EVMaximumVoltage_isUsed = 1u;
				break;
			case 85:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMechanicalChargingDeviceStatus) */
				/* FirstStartTag[CHARACTERS[ENUMERATION]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
						exiFrag->EVMechanicalChargingDeviceStatus = (iso2mechanicalChargingDeviceStatusType) uint32;
						exiFrag->EVMechanicalChargingDeviceStatus_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 86:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMinimumChargeCurrent) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVMinimumChargeCurrent);
				exiFrag->EVMinimumChargeCurrent_isUsed = 1u;
				break;
			case 87:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMinimumChargeCurrent) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVMinimumChargeCurrent);
				exiFrag->EVMinimumChargeCurrent_isUsed = 1u;
				break;
			case 88:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMinimumChargePower) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVMinimumChargePower);
				exiFrag->EVMinimumChargePower_isUsed = 1u;
				break;
			case 89:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMinimumDischargeCurrent) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVMinimumDischargeCurrent);
				exiFrag->EVMinimumDischargeCurrent_isUsed = 1u;
				break;
			case 90:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMinimumDischargeCurrent) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVMinimumDischargeCurrent);
				exiFrag->EVMinimumDischargeCurrent_isUsed = 1u;
				break;
			case 91:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMinimumDischargePower) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVMinimumDischargePower);
				exiFrag->EVMinimumDischargePower_isUsed = 1u;
				break;
			case 92:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMinimumEnergyRequest) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVMinimumEnergyRequest);
				exiFrag->EVMinimumEnergyRequest_isUsed = 1u;
				break;
			case 93:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMinimumEnergyRequest) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVMinimumEnergyRequest);
				exiFrag->EVMinimumEnergyRequest_isUsed = 1u;
				break;
			case 94:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMinimumPower) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVMinimumPower);
				exiFrag->EVMinimumPower_isUsed = 1u;
				break;
			case 95:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVMinimumVoltage) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVMinimumVoltage);
				exiFrag->EVMinimumVoltage_isUsed = 1u;
				break;
			case 96:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVMinimumVoltage) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVMinimumVoltage);
				exiFrag->EVMinimumVoltage_isUsed = 1u;
				break;
			case 97:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVOperation) */
				/* FirstStartTag[CHARACTERS[ENUMERATION]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeNBitUnsignedInteger(stream, 1, &uint32);
						exiFrag->EVOperation = (iso2EVOperationType) uint32;
						exiFrag->EVOperation_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 98:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVPresentActivePower) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVPresentActivePower);
				exiFrag->EVPresentActivePower_isUsed = 1u;
				break;
			case 99:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVPresentReactivePower) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVPresentReactivePower);
				exiFrag->EVPresentReactivePower_isUsed = 1u;
				break;
			case 100:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVProcessing) */
				/* FirstStartTag[CHARACTERS[ENUMERATION]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
						exiFrag->EVProcessing = (iso2EVSEProcessingType) uint32;
						exiFrag->EVProcessing_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 101:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSECheckOutStatus) */
				/* FirstStartTag[CHARACTERS[ENUMERATION]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
						exiFrag->EVSECheckOutStatus = (iso2EVCheckOutStatusType) uint32;
						exiFrag->EVSECheckOutStatus_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 102:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSECurrentLimitAchieved) */
				/* FirstStartTag[CHARACTERS[BOOLEAN]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeBoolean(stream, &exiFrag->EVSECurrentLimitAchieved);
						exiFrag->EVSECurrentLimitAchieved_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 103:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSECurrentRegulationTolerance) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVSECurrentRegulationTolerance);
				exiFrag->EVSECurrentRegulationTolerance_isUsed = 1u;
				break;
			case 104:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEElectricalChargingDeviceStatus) */
				/* FirstStartTag[CHARACTERS[ENUMERATION]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeNBitUnsignedInteger(stream, 1, &uint32);
						exiFrag->EVSEElectricalChargingDeviceStatus = (iso2electricalChargingDeviceStatusType) uint32;
						exiFrag->EVSEElectricalChargingDeviceStatus_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 105:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEEnergyToBeDelivered) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVSEEnergyToBeDelivered);
				exiFrag->EVSEEnergyToBeDelivered_isUsed = 1u;
				break;
			case 106:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEEnergyTransferParameter) */
				errn = decode_iso2EVSEEnergyTransferParameterType(stream, &exiFrag->EVSEEnergyTransferParameter);
				exiFrag->EVSEEnergyTransferParameter_isUsed = 1u;
				break;
			case 107:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEFinePositioningParameters) */
				errn = decode_iso2EVSEFinePositioningParametersType(stream, &exiFrag->EVSEFinePositioningParameters);
				exiFrag->EVSEFinePositioningParameters_isUsed = 1u;
				break;
			case 108:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEFinePositioningSetupParameters) */
				errn = decode_iso2EVSEFinePositioningSetupParametersType(stream, &exiFrag->EVSEFinePositioningSetupParameters);
				exiFrag->EVSEFinePositioningSetupParameters_isUsed = 1u;
				break;
			case 109:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEID) */
				/* FirstStartTag[CHARACTERS[STRING]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeUnsignedInteger16(stream, &exiFrag->EVSEID.charactersLen);
						if (errn == 0) {
							if (exiFrag->EVSEID.charactersLen >= 2) {
								exiFrag->EVSEID.charactersLen = (uint16_t)(exiFrag->EVSEID.charactersLen - 2); /* string table miss */
								errn = decodeCharacters(stream, exiFrag->EVSEID.charactersLen, exiFrag->EVSEID.characters, iso2EXIFragment_EVSEID_CHARACTERS_SIZE);
							} else {
								/* string table hit */
								errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
							}
						}
						exiFrag->EVSEID_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 110:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEMaximumChargeCurrent) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVSEMaximumChargeCurrent);
				exiFrag->EVSEMaximumChargeCurrent_isUsed = 1u;
				break;
			case 111:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEMaximumChargeCurrent) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVSEMaximumChargeCurrent);
				exiFrag->EVSEMaximumChargeCurrent_isUsed = 1u;
				break;
			case 112:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEMaximumChargePower) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVSEMaximumChargePower);
				exiFrag->EVSEMaximumChargePower_isUsed = 1u;
				break;
			case 113:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEMaximumChargePower) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVSEMaximumChargePower);
				exiFrag->EVSEMaximumChargePower_isUsed = 1u;
				break;
			case 114:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEMaximumCurrent) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVSEMaximumCurrent);
				exiFrag->EVSEMaximumCurrent_isUsed = 1u;
				break;
			case 115:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEMaximumDischargeCurrent) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVSEMaximumDischargeCurrent);
				exiFrag->EVSEMaximumDischargeCurrent_isUsed = 1u;
				break;
			case 116:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEMaximumDischargeCurrent) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVSEMaximumDischargeCurrent);
				exiFrag->EVSEMaximumDischargeCurrent_isUsed = 1u;
				break;
			case 117:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEMaximumDischargePower) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVSEMaximumDischargePower);
				exiFrag->EVSEMaximumDischargePower_isUsed = 1u;
				break;
			case 118:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEMaximumDischargePower) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVSEMaximumDischargePower);
				exiFrag->EVSEMaximumDischargePower_isUsed = 1u;
				break;
			case 119:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEMaximumPower) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVSEMaximumPower);
				exiFrag->EVSEMaximumPower_isUsed = 1u;
				break;
			case 120:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEMaximumPower) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVSEMaximumPower);
				exiFrag->EVSEMaximumPower_isUsed = 1u;
				break;
			case 121:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEMaximumVoltage) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVSEMaximumVoltage);
				exiFrag->EVSEMaximumVoltage_isUsed = 1u;
				break;
			case 122:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEMaximumVoltage) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVSEMaximumVoltage);
				exiFrag->EVSEMaximumVoltage_isUsed = 1u;
				break;
			case 123:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEMechanicalChargingDeviceStatus) */
				/* FirstStartTag[CHARACTERS[ENUMERATION]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
						exiFrag->EVSEMechanicalChargingDeviceStatus = (iso2mechanicalChargingDeviceStatusType) uint32;
						exiFrag->EVSEMechanicalChargingDeviceStatus_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 124:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEMinimumChargeCurrent) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVSEMinimumChargeCurrent);
				exiFrag->EVSEMinimumChargeCurrent_isUsed = 1u;
				break;
			case 125:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEMinimumDischargeCurrent) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVSEMinimumDischargeCurrent);
				exiFrag->EVSEMinimumDischargeCurrent_isUsed = 1u;
				break;
			case 126:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEMinimumPower) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVSEMinimumPower);
				exiFrag->EVSEMinimumPower_isUsed = 1u;
				break;
			case 127:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEMinimumVoltage) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVSEMinimumVoltage);
				exiFrag->EVSEMinimumVoltage_isUsed = 1u;
				break;
			case 128:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEMinimumVoltage) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVSEMinimumVoltage);
				exiFrag->EVSEMinimumVoltage_isUsed = 1u;
				break;
			case 129:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSENominalFrequency) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVSENominalFrequency);
				exiFrag->EVSENominalFrequency_isUsed = 1u;
				break;
			case 130:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSENominalVoltage) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVSENominalVoltage);
				exiFrag->EVSENominalVoltage_isUsed = 1u;
				break;
			case 131:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSENotification) */
				/* FirstStartTag[CHARACTERS[ENUMERATION]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeNBitUnsignedInteger(stream, 1, &uint32);
						exiFrag->EVSENotification = (iso2EVSENotificationType) uint32;
						exiFrag->EVSENotification_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 132:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEOutputPower) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVSEOutputPower);
				exiFrag->EVSEOutputPower_isUsed = 1u;
				break;
			case 133:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVSEPeakCurrentRipple) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVSEPeakCurrentRipple);
				exiFrag->EVSEPeakCurrentRipple_isUsed = 1u;
				break;
			case 134:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEPowerLimitAchieved) */
				/* FirstStartTag[CHARACTERS[BOOLEAN]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeBoolean(stream, &exiFrag->EVSEPowerLimitAchieved);
						exiFrag->EVSEPowerLimitAchieved_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 135:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEPresentCurrent) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVSEPresentCurrent);
				exiFrag->EVSEPresentCurrent_isUsed = 1u;
				break;
			case 136:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEPresentVoltage) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVSEPresentVoltage);
				exiFrag->EVSEPresentVoltage_isUsed = 1u;
				break;
			case 137:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEProcessing) */
				/* FirstStartTag[CHARACTERS[ENUMERATION]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
						exiFrag->EVSEProcessing = (iso2EVSEProcessingType) uint32;
						exiFrag->EVSEProcessing_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 138:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEStatus) */
				errn = decode_iso2EVSEStatusType(stream, &exiFrag->EVSEStatus);
				exiFrag->EVSEStatus_isUsed = 1u;
				break;
			case 139:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSETargetPower) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVSETargetPower);
				exiFrag->EVSETargetPower_isUsed = 1u;
				break;
			case 140:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSETargetReactivePower) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVSETargetReactivePower);
				exiFrag->EVSETargetReactivePower_isUsed = 1u;
				break;
			case 141:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSETimeStamp) */
				/* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeInteger64(stream, &exiFrag->EVSETimeStamp);
						exiFrag->EVSETimeStamp_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 142:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVSEVoltageLimitAchieved) */
				/* FirstStartTag[CHARACTERS[BOOLEAN]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeBoolean(stream, &exiFrag->EVSEVoltageLimitAchieved);
						exiFrag->EVSEVoltageLimitAchieved_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 143:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVTargetCurrent) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVTargetCurrent);
				exiFrag->EVTargetCurrent_isUsed = 1u;
				break;
			case 144:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVTargetEnergyRequest) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVTargetEnergyRequest);
				exiFrag->EVTargetEnergyRequest_isUsed = 1u;
				break;
			case 145:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EVTargetEnergyRequest) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVTargetEnergyRequest);
				exiFrag->EVTargetEnergyRequest_isUsed = 1u;
				break;
			case 146:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVTargetPower) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVTargetPower);
				exiFrag->EVTargetPower_isUsed = 1u;
				break;
			case 147:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EVTargetVoltage) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->EVTargetVoltage);
				exiFrag->EVTargetVoltage_isUsed = 1u;
				break;
			case 148:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}EffectiveRadiatedPower) */
				/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
						exiFrag->EffectiveRadiatedPower = (int8_t)(uint32 -128);
						exiFrag->EffectiveRadiatedPower_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 149:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}EnergyTransferServiceList) */
				errn = decode_iso2ServiceListType(stream, &exiFrag->EnergyTransferServiceList);
				exiFrag->EnergyTransferServiceList_isUsed = 1u;
				break;
			case 150:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Exponent) */
				errn = EXI_UNSUPPORTED_FRAGMENT_ELEMENT; /* overlapping name Exponent */
				break;
			case 151:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Exponent) */
				errn = EXI_UNSUPPORTED_FRAGMENT_ELEMENT; /* overlapping name Exponent */
				break;
			case 152:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}FODStatus) */
				/* FirstStartTag[CHARACTERS[ENUMERATION]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
						exiFrag->FODStatus = (iso2FODStatusType) uint32;
						exiFrag->FODStatus_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 153:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}FinePositioningReq) */
				errn = decode_iso2FinePositioningReqType(stream, &exiFrag->FinePositioningReq);
				exiFrag->FinePositioningReq_isUsed = 1u;
				break;
			case 154:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}FinePositioningRes) */
				errn = decode_iso2FinePositioningResType(stream, &exiFrag->FinePositioningRes);
				exiFrag->FinePositioningRes_isUsed = 1u;
				break;
			case 155:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}FinePositioningSetupReq) */
				errn = decode_iso2FinePositioningSetupReqType(stream, &exiFrag->FinePositioningSetupReq);
				exiFrag->FinePositioningSetupReq_isUsed = 1u;
				break;
			case 156:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}FinePositioningSetupRes) */
				errn = decode_iso2FinePositioningSetupResType(stream, &exiFrag->FinePositioningSetupRes);
				exiFrag->FinePositioningSetupRes_isUsed = 1u;
				break;
			case 157:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}FreeService) */
				/* FirstStartTag[CHARACTERS[BOOLEAN]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeBoolean(stream, &exiFrag->FreeService);
						exiFrag->FreeService_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 158:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}FrequencyChannel) */
				/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeUnsignedInteger32(stream, &exiFrag->FrequencyChannel);
						exiFrag->FrequencyChannel_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 159:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}G) */
				/* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeUnsignedInteger16(stream, &exiFrag->G.bytesLen);
						if (errn == 0) {
							errn =  (exiFrag->G.bytesLen) <= iso2EXIFragment_G_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
						}
						if (errn == 0) {
							errn = decodeBytes(stream, exiFrag->G.bytesLen, exiFrag->G.bytes);
						}
						exiFrag->G_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 160:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}GAID) */
				/* FirstStartTag[CHARACTERS[STRING]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeUnsignedInteger16(stream, &exiFrag->GAID.charactersLen);
						if (errn == 0) {
							if (exiFrag->GAID.charactersLen >= 2) {
								exiFrag->GAID.charactersLen = (uint16_t)(exiFrag->GAID.charactersLen - 2); /* string table miss */
								errn = decodeCharacters(stream, exiFrag->GAID.charactersLen, exiFrag->GAID.characters, iso2EXIFragment_GAID_CHARACTERS_SIZE);
							} else {
								/* string table hit */
								errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
							}
						}
						exiFrag->GAID_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 161:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}GenChallenge) */
				/* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeUnsignedInteger16(stream, &exiFrag->GenChallenge.bytesLen);
						if (errn == 0) {
							errn =  (exiFrag->GenChallenge.bytesLen) <= iso2EXIFragment_GenChallenge_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
						}
						if (errn == 0) {
							errn = decodeBytes(stream, exiFrag->GenChallenge.bytesLen, exiFrag->GenChallenge.bytes);
						}
						exiFrag->GenChallenge_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 162:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}GenericParameters) */
				errn = decode_iso2ParameterSetType(stream, &exiFrag->GenericParameters);
				exiFrag->GenericParameters_isUsed = 1u;
				break;
			case 163:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Generic_EVFinePositioningParameters) */
				errn = decode_iso2Generic_EVFinePositioningParametersType(stream, &exiFrag->Generic_EVFinePositioningParameters);
				exiFrag->Generic_EVFinePositioningParameters_isUsed = 1u;
				break;
			case 164:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Generic_EVSEFinePositioningParameters) */
				errn = decode_iso2Generic_EVSEFinePositioningParametersType(stream, &exiFrag->Generic_EVSEFinePositioningParameters);
				exiFrag->Generic_EVSEFinePositioningParameters_isUsed = 1u;
				break;
			case 165:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}HMACOutputLength) */
				/* FirstStartTag[CHARACTERS[INTEGER]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeInteger64(stream, &exiFrag->HMACOutputLength);
						exiFrag->HMACOutputLength_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 166:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDef}Header) */
				errn = decode_iso2MessageHeaderType(stream, &exiFrag->Header);
				exiFrag->Header_isUsed = 1u;
				break;
			case 167:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}InletHot) */
				/* FirstStartTag[CHARACTERS[BOOLEAN]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeBoolean(stream, &exiFrag->InletHot);
						exiFrag->InletHot_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 168:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}J) */
				/* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeUnsignedInteger16(stream, &exiFrag->J.bytesLen);
						if (errn == 0) {
							errn =  (exiFrag->J.bytesLen) <= iso2EXIFragment_J_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
						}
						if (errn == 0) {
							errn = decodeBytes(stream, exiFrag->J.bytesLen, exiFrag->J.bytes);
						}
						exiFrag->J_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 169:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyInfo) */
				errn = decode_iso2KeyInfoType(stream, &exiFrag->KeyInfo);
				exiFrag->KeyInfo_isUsed = 1u;
				break;
			case 170:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyName) */
				/* First(xsi:type)StartTag[CHARACTERS[STRING]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeUnsignedInteger16(stream, &exiFrag->KeyName.charactersLen);
						if (errn == 0) {
							if (exiFrag->KeyName.charactersLen >= 2) {
								exiFrag->KeyName.charactersLen = (uint16_t)(exiFrag->KeyName.charactersLen - 2); /* string table miss */
								errn = decodeCharacters(stream, exiFrag->KeyName.charactersLen, exiFrag->KeyName.characters, iso2EXIFragment_KeyName_CHARACTERS_SIZE);
							} else {
								/* string table hit */
								errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
							}
						}
						exiFrag->KeyName_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 171:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}KeyValue) */
				errn = decode_iso2KeyValueType(stream, &exiFrag->KeyValue);
				exiFrag->KeyValue_isUsed = 1u;
				break;
			case 172:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}LFA_EVFinePositioningParameters) */
				errn = decode_iso2LFA_EVFinePositioningParametersType(stream, &exiFrag->LFA_EVFinePositioningParameters);
				exiFrag->LFA_EVFinePositioningParameters_isUsed = 1u;
				break;
			case 173:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}LFA_EVFinePositioningSetupParameters) */
				errn = decode_iso2LFA_EVFinePositioningSetupParametersType(stream, &exiFrag->LFA_EVFinePositioningSetupParameters);
				exiFrag->LFA_EVFinePositioningSetupParameters_isUsed = 1u;
				break;
			case 174:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}LFA_EVSEFinePositioningParameters) */
				errn = decode_iso2LFA_EVSEFinePositioningParametersType(stream, &exiFrag->LFA_EVSEFinePositioningParameters);
				exiFrag->LFA_EVSEFinePositioningParameters_isUsed = 1u;
				break;
			case 175:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}LFA_EVSEFinePositioningSetupParameters) */
				errn = decode_iso2LFA_EVSEFinePositioningSetupParametersType(stream, &exiFrag->LFA_EVSEFinePositioningSetupParameters);
				exiFrag->LFA_EVSEFinePositioningSetupParameters_isUsed = 1u;
				break;
			case 176:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ListOfRootCertificateIDs) */
				errn = decode_iso2ListOfRootCertificateIDsType(stream, &exiFrag->ListOfRootCertificateIDs);
				exiFrag->ListOfRootCertificateIDs_isUsed = 1u;
				break;
			case 177:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MV_EVSEFinePositioningParameters) */
				errn = decode_iso2MV_EVSEFinePositioningParametersType(stream, &exiFrag->MV_EVSEFinePositioningParameters);
				exiFrag->MV_EVSEFinePositioningParameters_isUsed = 1u;
				break;
			case 178:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MV_EVSEFinePositioningSetupParameters) */
				errn = decode_iso2MV_EVSEFinePositioningSetupParametersType(stream, &exiFrag->MV_EVSEFinePositioningSetupParameters);
				exiFrag->MV_EVSEFinePositioningSetupParameters_isUsed = 1u;
				break;
			case 179:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVector) */
				errn = decode_iso2MagneticVectorType(stream, &exiFrag->MagneticVector);
				exiFrag->MagneticVector_isUsed = 1u;
				break;
			case 180:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorList) */
				errn = decode_iso2MagneticVectorListType(stream, &exiFrag->MagneticVectorList);
				exiFrag->MagneticVectorList_isUsed = 1u;
				break;
			case 181:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetup) */
				errn = decode_iso2MagneticVectorSetupType(stream, &exiFrag->MagneticVectorSetup);
				exiFrag->MagneticVectorSetup_isUsed = 1u;
				break;
			case 182:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MagneticVectorSetupList) */
				errn = decode_iso2MagneticVectorSetupListType(stream, &exiFrag->MagneticVectorSetupList);
				exiFrag->MagneticVectorSetupList_isUsed = 1u;
				break;
			case 183:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Manifest) */
				errn = decode_iso2ManifestType(stream, &exiFrag->Manifest);
				exiFrag->Manifest_isUsed = 1u;
				break;
			case 184:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}MaxSupportingPoints) */
				/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeNBitUnsignedInteger(stream, 10, &(uint32));
						exiFrag->MaxSupportingPoints = (uint16_t)(uint32 + 12);
						exiFrag->MaxSupportingPoints_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 185:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementData) */
				/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeUnsignedInteger16(stream, &exiFrag->MeasurementData);
						exiFrag->MeasurementData_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 186:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeasurementDataList) */
				errn = decode_iso2MeasurementDataListType(stream, &exiFrag->MeasurementDataList);
				exiFrag->MeasurementDataList_isUsed = 1u;
				break;
			case 187:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeterID) */
				/* FirstStartTag[CHARACTERS[STRING]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeUnsignedInteger16(stream, &exiFrag->MeterID.charactersLen);
						if (errn == 0) {
							if (exiFrag->MeterID.charactersLen >= 2) {
								exiFrag->MeterID.charactersLen = (uint16_t)(exiFrag->MeterID.charactersLen - 2); /* string table miss */
								errn = decodeCharacters(stream, exiFrag->MeterID.charactersLen, exiFrag->MeterID.characters, iso2EXIFragment_MeterID_CHARACTERS_SIZE);
							} else {
								/* string table hit */
								errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
							}
						}
						exiFrag->MeterID_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 188:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}MeterInfo) */
				errn = decode_iso2MeterInfoType(stream, &exiFrag->MeterInfo);
				exiFrag->MeterInfo_isUsed = 1u;
				break;
			case 189:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeterReadingCharged) */
				/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeUnsignedInteger64(stream, &exiFrag->MeterReadingCharged);
						exiFrag->MeterReadingCharged_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 190:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeterReadingDischarged) */
				/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeUnsignedInteger64(stream, &exiFrag->MeterReadingDischarged);
						exiFrag->MeterReadingDischarged_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 191:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MeterStatus) */
				/* FirstStartTag[CHARACTERS[INTEGER]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeInteger16(stream, &exiFrag->MeterStatus);
						exiFrag->MeterStatus_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 192:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}MeteringReceiptReq) */
				errn = decode_iso2MeteringReceiptReqType(stream, &exiFrag->MeteringReceiptReq);
				exiFrag->MeteringReceiptReq_isUsed = 1u;
				break;
			case 193:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}MeteringReceiptRes) */
				errn = decode_iso2MeteringReceiptResType(stream, &exiFrag->MeteringReceiptRes);
				exiFrag->MeteringReceiptRes_isUsed = 1u;
				break;
			case 194:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}MgmtData) */
				/* First(xsi:type)StartTag[CHARACTERS[STRING]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeUnsignedInteger16(stream, &exiFrag->MgmtData.charactersLen);
						if (errn == 0) {
							if (exiFrag->MgmtData.charactersLen >= 2) {
								exiFrag->MgmtData.charactersLen = (uint16_t)(exiFrag->MgmtData.charactersLen - 2); /* string table miss */
								errn = decodeCharacters(stream, exiFrag->MgmtData.charactersLen, exiFrag->MgmtData.characters, iso2EXIFragment_MgmtData_CHARACTERS_SIZE);
							} else {
								/* string table hit */
								errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
							}
						}
						exiFrag->MgmtData_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 195:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}MinimumPMaxRequest) */
				errn = decode_iso2MinimumPMaxRequestType(stream, &exiFrag->MinimumPMaxRequest);
				exiFrag->MinimumPMaxRequest_isUsed = 1u;
				break;
			case 196:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MinimumPMaxScheduleEntry) */
				errn = decode_iso2PMaxScheduleEntryType(stream, &exiFrag->MinimumPMaxScheduleEntry);
				exiFrag->MinimumPMaxScheduleEntry_isUsed = 1u;
				break;
			case 197:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}MinimumSOC) */
				/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
						exiFrag->MinimumSOC = (int8_t)(uint32 + 0);
						exiFrag->MinimumSOC_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 198:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Modulus) */
				/* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeUnsignedInteger16(stream, &exiFrag->Modulus.bytesLen);
						if (errn == 0) {
							errn =  (exiFrag->Modulus.bytesLen) <= iso2EXIFragment_Modulus_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
						}
						if (errn == 0) {
							errn = decodeBytes(stream, exiFrag->Modulus.bytesLen, exiFrag->Modulus.bytes);
						}
						exiFrag->Modulus_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 199:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}NotificationMaxDelay) */
				/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeUnsignedInteger16(stream, &exiFrag->NotificationMaxDelay);
						exiFrag->NotificationMaxDelay_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 200:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}NumEPriceLevels) */
				/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
						exiFrag->NumEPriceLevels = (uint8_t)(uint32 + 0);
						exiFrag->NumEPriceLevels_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 201:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}NumberOfSensors) */
				/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
						exiFrag->NumberOfSensors = (uint8_t)(uint32 + 0);
						exiFrag->NumberOfSensors_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 202:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}NumberOfSignalPackages) */
				/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
						exiFrag->NumberOfSignalPackages = (uint8_t)(uint32 + 0);
						exiFrag->NumberOfSignalPackages_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 203:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}OEMProvisioningCert) */
				/* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeUnsignedInteger16(stream, &exiFrag->OEMProvisioningCert.bytesLen);
						if (errn == 0) {
							errn =  (exiFrag->OEMProvisioningCert.bytesLen) <= iso2EXIFragment_OEMProvisioningCert_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
						}
						if (errn == 0) {
							errn = decodeBytes(stream, exiFrag->OEMProvisioningCert.bytesLen, exiFrag->OEMProvisioningCert.bytes);
						}
						exiFrag->OEMProvisioningCert_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 204:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Object) */
				errn = decode_iso2ObjectType(stream, &exiFrag->Object);
				exiFrag->Object_isUsed = 1u;
				break;
			case 205:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}OperationMode) */
				/* FirstStartTag[CHARACTERS[ENUMERATION]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeNBitUnsignedInteger(stream, 1, &uint32);
						exiFrag->OperationMode = (iso2operationModeType) uint32;
						exiFrag->OperationMode_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 206:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}P) */
				/* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeUnsignedInteger16(stream, &exiFrag->P.bytesLen);
						if (errn == 0) {
							errn =  (exiFrag->P.bytesLen) <= iso2EXIFragment_P_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
						}
						if (errn == 0) {
							errn = decodeBytes(stream, exiFrag->P.bytesLen, exiFrag->P.bytes);
						}
						exiFrag->P_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 207:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPData) */
				errn = decode_iso2PGPDataType(stream, &exiFrag->PGPData);
				exiFrag->PGPData_isUsed = 1u;
				break;
			case 208:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyID) */
				/* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeUnsignedInteger16(stream, &exiFrag->PGPKeyID.bytesLen);
						if (errn == 0) {
							errn =  (exiFrag->PGPKeyID.bytesLen) <= iso2EXIFragment_PGPKeyID_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
						}
						if (errn == 0) {
							errn = decodeBytes(stream, exiFrag->PGPKeyID.bytesLen, exiFrag->PGPKeyID.bytes);
						}
						exiFrag->PGPKeyID_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 209:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PGPKeyPacket) */
				/* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeUnsignedInteger16(stream, &exiFrag->PGPKeyPacket.bytesLen);
						if (errn == 0) {
							errn =  (exiFrag->PGPKeyPacket.bytesLen) <= iso2EXIFragment_PGPKeyPacket_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
						}
						if (errn == 0) {
							errn = decodeBytes(stream, exiFrag->PGPKeyPacket.bytesLen, exiFrag->PGPKeyPacket.bytes);
						}
						exiFrag->PGPKeyPacket_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 210:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}PMax) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->PMax);
				exiFrag->PMax_isUsed = 1u;
				break;
			case 211:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}PMaxDischargeSchedule) */
				errn = decode_iso2PMaxScheduleType(stream, &exiFrag->PMaxDischargeSchedule);
				exiFrag->PMaxDischargeSchedule_isUsed = 1u;
				break;
			case 212:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}PMaxSchedule) */
				errn = decode_iso2PMaxScheduleType(stream, &exiFrag->PMaxSchedule);
				exiFrag->PMaxSchedule_isUsed = 1u;
				break;
			case 213:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}PMaxScheduleEntry) */
				errn = decode_iso2PMaxScheduleEntryType(stream, &exiFrag->PMaxScheduleEntry);
				exiFrag->PMaxScheduleEntry_isUsed = 1u;
				break;
			case 214:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}PackageIndex) */
				/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeUnsignedInteger32(stream, &exiFrag->PackageIndex);
						exiFrag->PackageIndex_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 215:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}PackageSeparationTime) */
				/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
						exiFrag->PackageSeparationTime = (uint8_t)(uint32 + 0);
						exiFrag->PackageSeparationTime_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 216:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PairingParameters) */
				errn = decode_iso2ParameterSetType(stream, &exiFrag->PairingParameters);
				exiFrag->PairingParameters_isUsed = 1u;
				break;
			case 217:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PairingReq) */
				errn = decode_iso2PairingReqType(stream, &exiFrag->PairingReq);
				exiFrag->PairingReq_isUsed = 1u;
				break;
			case 218:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PairingRes) */
				errn = decode_iso2PairingResType(stream, &exiFrag->PairingRes);
				exiFrag->PairingRes_isUsed = 1u;
				break;
			case 219:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Parameter) */
				errn = decode_iso2ParameterType(stream, &exiFrag->Parameter);
				exiFrag->Parameter_isUsed = 1u;
				break;
			case 220:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSet) */
				errn = decode_iso2ParameterSetType(stream, &exiFrag->ParameterSet);
				exiFrag->ParameterSet_isUsed = 1u;
				break;
			case 221:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ParameterSetID) */
				/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeUnsignedInteger16(stream, &exiFrag->ParameterSetID);
						exiFrag->ParameterSetID_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 222:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ParkingMethod) */
				/* FirstStartTag[CHARACTERS[ENUMERATION]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
						exiFrag->ParkingMethod = (iso2parkingMethodType) uint32;
						exiFrag->ParkingMethod_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 223:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PaymentDetailsReq) */
				errn = decode_iso2PaymentDetailsReqType(stream, &exiFrag->PaymentDetailsReq);
				exiFrag->PaymentDetailsReq_isUsed = 1u;
				break;
			case 224:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PaymentDetailsRes) */
				errn = decode_iso2PaymentDetailsResType(stream, &exiFrag->PaymentDetailsRes);
				exiFrag->PaymentDetailsRes_isUsed = 1u;
				break;
			case 225:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}PaymentOption) */
				/* FirstStartTag[CHARACTERS[ENUMERATION]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeNBitUnsignedInteger(stream, 1, &uint32);
						exiFrag->PaymentOption = (iso2paymentOptionType) uint32;
						exiFrag->PaymentOption_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 226:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PaymentOptionList) */
				errn = decode_iso2PaymentOptionListType(stream, &exiFrag->PaymentOptionList);
				exiFrag->PaymentOptionList_isUsed = 1u;
				break;
			case 227:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PaymentServiceSelectionReq) */
				errn = decode_iso2PaymentServiceSelectionReqType(stream, &exiFrag->PaymentServiceSelectionReq);
				exiFrag->PaymentServiceSelectionReq_isUsed = 1u;
				break;
			case 228:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PaymentServiceSelectionRes) */
				errn = decode_iso2PaymentServiceSelectionResType(stream, &exiFrag->PaymentServiceSelectionRes);
				exiFrag->PaymentServiceSelectionRes_isUsed = 1u;
				break;
			case 229:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}PgenCounter) */
				/* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeUnsignedInteger16(stream, &exiFrag->PgenCounter.bytesLen);
						if (errn == 0) {
							errn =  (exiFrag->PgenCounter.bytesLen) <= iso2EXIFragment_PgenCounter_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
						}
						if (errn == 0) {
							errn = decodeBytes(stream, exiFrag->PgenCounter.bytesLen, exiFrag->PgenCounter.bytes);
						}
						exiFrag->PgenCounter_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 230:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PowerDeliveryReq) */
				errn = decode_iso2PowerDeliveryReqType(stream, &exiFrag->PowerDeliveryReq);
				exiFrag->PowerDeliveryReq_isUsed = 1u;
				break;
			case 231:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PowerDeliveryRes) */
				errn = decode_iso2PowerDeliveryResType(stream, &exiFrag->PowerDeliveryRes);
				exiFrag->PowerDeliveryRes_isUsed = 1u;
				break;
			case 232:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PowerDemandParameters) */
				errn = decode_iso2ParameterSetType(stream, &exiFrag->PowerDemandParameters);
				exiFrag->PowerDemandParameters_isUsed = 1u;
				break;
			case 233:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PowerDemandReq) */
				errn = decode_iso2PowerDemandReqType(stream, &exiFrag->PowerDemandReq);
				exiFrag->PowerDemandReq_isUsed = 1u;
				break;
			case 234:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PowerDemandRes) */
				errn = decode_iso2PowerDemandResType(stream, &exiFrag->PowerDemandRes);
				exiFrag->PowerDemandRes_isUsed = 1u;
				break;
			case 235:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PreChargeReq) */
				errn = decode_iso2PreChargeReqType(stream, &exiFrag->PreChargeReq);
				exiFrag->PreChargeReq_isUsed = 1u;
				break;
			case 236:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}PreChargeRes) */
				errn = decode_iso2PreChargeResType(stream, &exiFrag->PreChargeRes);
				exiFrag->PreChargeRes_isUsed = 1u;
				break;
			case 237:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ProfileEntry) */
				errn = decode_iso2PMaxScheduleEntryType(stream, &exiFrag->ProfileEntry);
				exiFrag->ProfileEntry_isUsed = 1u;
				break;
			case 238:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Q) */
				/* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeUnsignedInteger16(stream, &exiFrag->Q.bytesLen);
						if (errn == 0) {
							errn =  (exiFrag->Q.bytesLen) <= iso2EXIFragment_Q_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
						}
						if (errn == 0) {
							errn = decodeBytes(stream, exiFrag->Q.bytesLen, exiFrag->Q.bytes);
						}
						exiFrag->Q_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 239:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RSAKeyValue) */
				errn = decode_iso2RSAKeyValueType(stream, &exiFrag->RSAKeyValue);
				exiFrag->RSAKeyValue_isUsed = 1u;
				break;
			case 240:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ReceiptRequired) */
				/* FirstStartTag[CHARACTERS[BOOLEAN]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeBoolean(stream, &exiFrag->ReceiptRequired);
						exiFrag->ReceiptRequired_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 241:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Reference) */
				errn = decode_iso2ReferenceType(stream, &exiFrag->Reference);
				exiFrag->Reference_isUsed = 1u;
				break;
			case 242:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RelativeTimeInterval) */
				errn = decode_iso2RelativeTimeIntervalType(stream, &exiFrag->RelativeTimeInterval);
				exiFrag->RelativeTimeInterval_isUsed = 1u;
				break;
			case 243:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RemainingTimeToBulkSOC) */
				/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
						exiFrag->RemainingTimeToBulkSOC = (int8_t)(uint32 + 0);
						exiFrag->RemainingTimeToBulkSOC_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 244:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RemainingTimeToMinimumSOC) */
				/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
						exiFrag->RemainingTimeToMinimumSOC = (int8_t)(uint32 + 0);
						exiFrag->RemainingTimeToMinimumSOC_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 245:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RemainingTimeToTargetSOC) */
				/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
						exiFrag->RemainingTimeToTargetSOC = (int8_t)(uint32 + 0);
						exiFrag->RemainingTimeToTargetSOC_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 246:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ResponseCode) */
				/* FirstStartTag[CHARACTERS[ENUMERATION]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeNBitUnsignedInteger(stream, 5, &uint32);
						exiFrag->ResponseCode = (iso2responseCodeType) uint32;
						exiFrag->ResponseCode_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 247:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}RetrievalMethod) */
				errn = decode_iso2RetrievalMethodType(stream, &exiFrag->RetrievalMethod);
				exiFrag->RetrievalMethod_isUsed = 1u;
				break;
			case 248:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}RetryCounter) */
				/* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeInteger16(stream, &exiFrag->RetryCounter);
						exiFrag->RetryCounter_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 249:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RootCertificateID) */
				errn = decode_iso2X509IssuerSerialType(stream, &exiFrag->RootCertificateID);
				exiFrag->RootCertificateID_isUsed = 1u;
				break;
			case 250:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}RotationVAtoGA) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->RotationVAtoGA);
				exiFrag->RotationVAtoGA_isUsed = 1u;
				break;
			case 251:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SAProvisioningCertificateChain) */
				errn = decode_iso2CertificateChainType(stream, &exiFrag->SAProvisioningCertificateChain);
				exiFrag->SAProvisioningCertificateChain_isUsed = 1u;
				break;
			case 252:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SAScheduleList) */
				errn = decode_iso2SAScheduleListType(stream, &exiFrag->SAScheduleList);
				exiFrag->SAScheduleList_isUsed = 1u;
				break;
			case 253:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SAScheduleList) */
				errn = decode_iso2SAScheduleListType(stream, &exiFrag->SAScheduleList);
				exiFrag->SAScheduleList_isUsed = 1u;
				break;
			case 254:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SAScheduleTuple) */
				errn = decode_iso2SAScheduleTupleType(stream, &exiFrag->SAScheduleTuple);
				exiFrag->SAScheduleTuple_isUsed = 1u;
				break;
			case 255:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SAScheduleTupleID) */
				/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
						exiFrag->SAScheduleTupleID = (uint8_t)(uint32 + 1);
						exiFrag->SAScheduleTupleID_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 256:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SAScheduleTupleID) */
				/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
						exiFrag->SAScheduleTupleID = (uint8_t)(uint32 + 1);
						exiFrag->SAScheduleTupleID_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 257:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKIData) */
				errn = decode_iso2SPKIDataType(stream, &exiFrag->SPKIData);
				exiFrag->SPKIData_isUsed = 1u;
				break;
			case 258:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SPKISexp) */
				/* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeUnsignedInteger16(stream, &exiFrag->SPKISexp.bytesLen);
						if (errn == 0) {
							errn =  (exiFrag->SPKISexp.bytesLen) <= iso2EXIFragment_SPKISexp_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
						}
						if (errn == 0) {
							errn = decodeBytes(stream, exiFrag->SPKISexp.bytesLen, exiFrag->SPKISexp.bytes);
						}
						exiFrag->SPKISexp_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 259:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SalesTariff) */
				errn = decode_iso2SalesTariffType(stream, &exiFrag->SalesTariff);
				exiFrag->SalesTariff_isUsed = 1u;
				break;
			case 260:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SalesTariffDescription) */
				/* FirstStartTag[CHARACTERS[STRING]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeUnsignedInteger16(stream, &exiFrag->SalesTariffDescription.charactersLen);
						if (errn == 0) {
							if (exiFrag->SalesTariffDescription.charactersLen >= 2) {
								exiFrag->SalesTariffDescription.charactersLen = (uint16_t)(exiFrag->SalesTariffDescription.charactersLen - 2); /* string table miss */
								errn = decodeCharacters(stream, exiFrag->SalesTariffDescription.charactersLen, exiFrag->SalesTariffDescription.characters, iso2EXIFragment_SalesTariffDescription_CHARACTERS_SIZE);
							} else {
								/* string table hit */
								errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
							}
						}
						exiFrag->SalesTariffDescription_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 261:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SalesTariffEntry) */
				errn = decode_iso2SalesTariffEntryType(stream, &exiFrag->SalesTariffEntry);
				exiFrag->SalesTariffEntry_isUsed = 1u;
				break;
			case 262:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SalesTariffID) */
				/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
						exiFrag->SalesTariffID = (uint8_t)(uint32 + 1);
						exiFrag->SalesTariffID_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 263:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Seed) */
				/* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeUnsignedInteger16(stream, &exiFrag->Seed.bytesLen);
						if (errn == 0) {
							errn =  (exiFrag->Seed.bytesLen) <= iso2EXIFragment_Seed_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
						}
						if (errn == 0) {
							errn = decodeBytes(stream, exiFrag->Seed.bytesLen, exiFrag->Seed.bytes);
						}
						exiFrag->Seed_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 264:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SelectedEnergyTransferService) */
				errn = decode_iso2SelectedServiceType(stream, &exiFrag->SelectedEnergyTransferService);
				exiFrag->SelectedEnergyTransferService_isUsed = 1u;
				break;
			case 265:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SelectedPaymentOption) */
				/* FirstStartTag[CHARACTERS[ENUMERATION]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeNBitUnsignedInteger(stream, 1, &uint32);
						exiFrag->SelectedPaymentOption = (iso2paymentOptionType) uint32;
						exiFrag->SelectedPaymentOption_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 266:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SelectedService) */
				errn = decode_iso2SelectedServiceType(stream, &exiFrag->SelectedService);
				exiFrag->SelectedService_isUsed = 1u;
				break;
			case 267:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SelectedVASList) */
				errn = decode_iso2SelectedServiceListType(stream, &exiFrag->SelectedVASList);
				exiFrag->SelectedVASList_isUsed = 1u;
				break;
			case 268:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Sensor) */
				errn = decode_iso2SensorType(stream, &exiFrag->Sensor);
				exiFrag->Sensor_isUsed = 1u;
				break;
			case 269:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorID) */
				/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
						exiFrag->SensorID = (uint8_t)(uint32 + 0);
						exiFrag->SensorID_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 270:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorList) */
				errn = decode_iso2SensorListType(stream, &exiFrag->SensorList);
				exiFrag->SensorList_isUsed = 1u;
				break;
			case 271:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorMeasurements) */
				errn = decode_iso2SensorMeasurementsType(stream, &exiFrag->SensorMeasurements);
				exiFrag->SensorMeasurements_isUsed = 1u;
				break;
			case 272:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorOrder) */
				errn = decode_iso2SensorOrderListType(stream, &exiFrag->SensorOrder);
				exiFrag->SensorOrder_isUsed = 1u;
				break;
			case 273:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorOrientation) */
				errn = decode_iso2CartesianCoordinatesType(stream, &exiFrag->SensorOrientation);
				exiFrag->SensorOrientation_isUsed = 1u;
				break;
			case 274:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackage) */
				errn = decode_iso2SensorPackageType(stream, &exiFrag->SensorPackage);
				exiFrag->SensorPackage_isUsed = 1u;
				break;
			case 275:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPackageList) */
				errn = decode_iso2SensorPackageListType(stream, &exiFrag->SensorPackageList);
				exiFrag->SensorPackageList_isUsed = 1u;
				break;
			case 276:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SensorPosition) */
				errn = EXI_UNSUPPORTED_FRAGMENT_ELEMENT; /* overlapping name SensorPosition */
				break;
			case 277:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Service) */
				errn = decode_iso2ServiceType(stream, &exiFrag->Service);
				exiFrag->Service_isUsed = 1u;
				break;
			case 278:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ServiceDetailReq) */
				errn = decode_iso2ServiceDetailReqType(stream, &exiFrag->ServiceDetailReq);
				exiFrag->ServiceDetailReq_isUsed = 1u;
				break;
			case 279:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ServiceDetailRes) */
				errn = decode_iso2ServiceDetailResType(stream, &exiFrag->ServiceDetailRes);
				exiFrag->ServiceDetailRes_isUsed = 1u;
				break;
			case 280:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ServiceDiscoveryReq) */
				errn = decode_iso2ServiceDiscoveryReqType(stream, &exiFrag->ServiceDiscoveryReq);
				exiFrag->ServiceDiscoveryReq_isUsed = 1u;
				break;
			case 281:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ServiceDiscoveryRes) */
				errn = decode_iso2ServiceDiscoveryResType(stream, &exiFrag->ServiceDiscoveryRes);
				exiFrag->ServiceDiscoveryRes_isUsed = 1u;
				break;
			case 282:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ServiceID) */
				/* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeUnsignedInteger16(stream, &exiFrag->ServiceID);
						exiFrag->ServiceID_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 283:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ServiceID) */
				/* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeUnsignedInteger16(stream, &exiFrag->ServiceID);
						exiFrag->ServiceID_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 284:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}ServiceParameterList) */
				errn = decode_iso2ServiceParameterListType(stream, &exiFrag->ServiceParameterList);
				exiFrag->ServiceParameterList_isUsed = 1u;
				break;
			case 285:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SessionID) */
				/* FirstStartTag[CHARACTERS[BINARY_HEX]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeUnsignedInteger16(stream, &exiFrag->SessionID.bytesLen);
						if (errn == 0) {
							errn =  (exiFrag->SessionID.bytesLen) <= iso2EXIFragment_SessionID_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
						}
						if (errn == 0) {
							errn = decodeBytes(stream, exiFrag->SessionID.bytesLen, exiFrag->SessionID.bytes);
						}
						exiFrag->SessionID_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 286:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgHeader}SessionID) */
				/* FirstStartTag[CHARACTERS[BINARY_HEX]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeUnsignedInteger16(stream, &exiFrag->SessionID.bytesLen);
						if (errn == 0) {
							errn =  (exiFrag->SessionID.bytesLen) <= iso2EXIFragment_SessionID_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
						}
						if (errn == 0) {
							errn = decodeBytes(stream, exiFrag->SessionID.bytesLen, exiFrag->SessionID.bytes);
						}
						exiFrag->SessionID_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 287:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SessionSetupReq) */
				errn = decode_iso2SessionSetupReqType(stream, &exiFrag->SessionSetupReq);
				exiFrag->SessionSetupReq_isUsed = 1u;
				break;
			case 288:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SessionSetupRes) */
				errn = decode_iso2SessionSetupResType(stream, &exiFrag->SessionSetupRes);
				exiFrag->SessionSetupRes_isUsed = 1u;
				break;
			case 289:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SessionStopReq) */
				errn = decode_iso2SessionStopReqType(stream, &exiFrag->SessionStopReq);
				exiFrag->SessionStopReq_isUsed = 1u;
				break;
			case 290:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SessionStopRes) */
				errn = decode_iso2SessionStopResType(stream, &exiFrag->SessionStopRes);
				exiFrag->SessionStopRes_isUsed = 1u;
				break;
			case 291:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SigMeterReading) */
				/* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeUnsignedInteger16(stream, &exiFrag->SigMeterReading.bytesLen);
						if (errn == 0) {
							errn =  (exiFrag->SigMeterReading.bytesLen) <= iso2EXIFragment_SigMeterReading_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
						}
						if (errn == 0) {
							errn = decodeBytes(stream, exiFrag->SigMeterReading.bytesLen, exiFrag->SigMeterReading.bytes);
						}
						exiFrag->SigMeterReading_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 292:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SignalFrequency) */
				/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeUnsignedInteger16(stream, &exiFrag->SignalFrequency);
						exiFrag->SignalFrequency_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 293:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SignalPulseDuration) */
				/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
						exiFrag->SignalPulseDuration = (uint8_t)(uint32 + 0);
						exiFrag->SignalPulseDuration_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 294:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SignalSeparationTime) */
				/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
						exiFrag->SignalSeparationTime = (uint8_t)(uint32 + 0);
						exiFrag->SignalSeparationTime_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 295:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Signature) */
				errn = decode_iso2SignatureType(stream, &exiFrag->Signature);
				exiFrag->Signature_isUsed = 1u;
				break;
			case 296:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureMethod) */
				errn = decode_iso2SignatureMethodType(stream, &exiFrag->SignatureMethod);
				exiFrag->SignatureMethod_isUsed = 1u;
				break;
			case 297:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperties) */
				errn = decode_iso2SignaturePropertiesType(stream, &exiFrag->SignatureProperties);
				exiFrag->SignatureProperties_isUsed = 1u;
				break;
			case 298:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureProperty) */
				errn = decode_iso2SignaturePropertyType(stream, &exiFrag->SignatureProperty);
				exiFrag->SignatureProperty_isUsed = 1u;
				break;
			case 299:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignatureValue) */
				errn = decode_iso2SignatureValueType(stream, &exiFrag->SignatureValue);
				exiFrag->SignatureValue_isUsed = 1u;
				break;
			case 300:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}SignedInfo) */
				errn = decode_iso2SignedInfoType(stream, &exiFrag->SignedInfo);
				exiFrag->SignedInfo_isUsed = 1u;
				break;
			case 301:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}SubCertificates) */
				errn = decode_iso2SubCertificatesType(stream, &exiFrag->SubCertificates);
				exiFrag->SubCertificates_isUsed = 1u;
				break;
			case 302:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SupportedServiceIDs) */
				errn = decode_iso2ServiceIDListType(stream, &exiFrag->SupportedServiceIDs);
				exiFrag->SupportedServiceIDs_isUsed = 1u;
				break;
			case 303:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SystemStatusReq) */
				errn = decode_iso2SystemStatusReqType(stream, &exiFrag->SystemStatusReq);
				exiFrag->SystemStatusReq_isUsed = 1u;
				break;
			case 304:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}SystemStatusRes) */
				errn = decode_iso2SystemStatusResType(stream, &exiFrag->SystemStatusRes);
				exiFrag->SystemStatusRes_isUsed = 1u;
				break;
			case 305:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}TMeter) */
				/* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeInteger64(stream, &exiFrag->TMeter);
						exiFrag->TMeter_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 306:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}TargetOffset) */
				errn = decode_iso2TargetPositionType(stream, &exiFrag->TargetOffset);
				exiFrag->TargetOffset_isUsed = 1u;
				break;
			case 307:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}TargetOffsetX) */
				/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeUnsignedInteger16(stream, &exiFrag->TargetOffsetX);
						exiFrag->TargetOffsetX_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 308:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}TargetOffsetY) */
				/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeUnsignedInteger16(stream, &exiFrag->TargetOffsetY);
						exiFrag->TargetOffsetY_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 309:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}TargetSOC) */
				/* FirstStartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeNBitUnsignedInteger(stream, 7, &(uint32));
						exiFrag->TargetSOC = (int8_t)(uint32 + 0);
						exiFrag->TargetSOC_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 310:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transform) */
				errn = decode_iso2TransformType(stream, &exiFrag->Transform);
				exiFrag->Transform_isUsed = 1u;
				break;
			case 311:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Transforms) */
				errn = decode_iso2TransformsType(stream, &exiFrag->Transforms);
				exiFrag->Transforms_isUsed = 1u;
				break;
			case 312:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}V2GRequest) */
				errn = decode_iso2BodyBaseType(stream, &exiFrag->V2GRequest);
				exiFrag->V2GRequest_isUsed = 1u;
				break;
			case 313:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}V2GResponse) */
				errn = decode_iso2V2GResponseType(stream, &exiFrag->V2GResponse);
				exiFrag->V2GResponse_isUsed = 1u;
				break;
			case 314:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDef}V2G_Message) */
				errn = decode_iso2AnonType_V2G_Message(stream, &exiFrag->V2G_Message);
				exiFrag->V2G_Message_isUsed = 1u;
				break;
			case 315:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}VASList) */
				errn = decode_iso2ServiceListType(stream, &exiFrag->VASList);
				exiFrag->VASList_isUsed = 1u;
				break;
			case 316:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}Value) */
				/* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeInteger16(stream, &exiFrag->Value);
						exiFrag->Value_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 317:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}VehicleCheckInReq) */
				errn = decode_iso2VehicleCheckInReqType(stream, &exiFrag->VehicleCheckInReq);
				exiFrag->VehicleCheckInReq_isUsed = 1u;
				break;
			case 318:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}VehicleCheckInRes) */
				errn = decode_iso2VehicleCheckInResType(stream, &exiFrag->VehicleCheckInRes);
				exiFrag->VehicleCheckInRes_isUsed = 1u;
				break;
			case 319:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}VehicleCheckOutReq) */
				errn = decode_iso2VehicleCheckOutReqType(stream, &exiFrag->VehicleCheckOutReq);
				exiFrag->VehicleCheckOutReq_isUsed = 1u;
				break;
			case 320:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}VehicleCheckOutRes) */
				errn = decode_iso2VehicleCheckOutResType(stream, &exiFrag->VehicleCheckOutRes);
				exiFrag->VehicleCheckOutRes_isUsed = 1u;
				break;
			case 321:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}VehicleSpace) */
				/* First(xsi:type)StartTag[CHARACTERS[UNSIGNED_INTEGER]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeUnsignedInteger16(stream, &exiFrag->VehicleSpace);
						exiFrag->VehicleSpace_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 322:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}WPT_EVChargeParameter) */
				errn = decode_iso2WPT_EVChargeParameterType(stream, &exiFrag->WPT_EVChargeParameter);
				exiFrag->WPT_EVChargeParameter_isUsed = 1u;
				break;
			case 323:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}WPT_EVSEChargeParameter) */
				errn = decode_iso2WPT_EVSEChargeParameterType(stream, &exiFrag->WPT_EVSEChargeParameter);
				exiFrag->WPT_EVSEChargeParameter_isUsed = 1u;
				break;
			case 324:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}WeldingDetectionReq) */
				errn = decode_iso2WeldingDetectionReqType(stream, &exiFrag->WeldingDetectionReq);
				exiFrag->WeldingDetectionReq_isUsed = 1u;
				break;
			case 325:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}WeldingDetectionRes) */
				errn = decode_iso2WeldingDetectionResType(stream, &exiFrag->WeldingDetectionRes);
				exiFrag->WeldingDetectionRes_isUsed = 1u;
				break;
			case 326:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509CRL) */
				/* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeUnsignedInteger16(stream, &exiFrag->X509CRL.bytesLen);
						if (errn == 0) {
							errn =  (exiFrag->X509CRL.bytesLen) <= iso2EXIFragment_X509CRL_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
						}
						if (errn == 0) {
							errn = decodeBytes(stream, exiFrag->X509CRL.bytesLen, exiFrag->X509CRL.bytes);
						}
						exiFrag->X509CRL_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 327:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Certificate) */
				/* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeUnsignedInteger16(stream, &exiFrag->X509Certificate.bytesLen);
						if (errn == 0) {
							errn =  (exiFrag->X509Certificate.bytesLen) <= iso2EXIFragment_X509Certificate_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
						}
						if (errn == 0) {
							errn = decodeBytes(stream, exiFrag->X509Certificate.bytesLen, exiFrag->X509Certificate.bytes);
						}
						exiFrag->X509Certificate_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 328:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509Data) */
				errn = decode_iso2X509DataType(stream, &exiFrag->X509Data);
				exiFrag->X509Data_isUsed = 1u;
				break;
			case 329:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerName) */
				/* First(xsi:type)StartTag[CHARACTERS[STRING]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeUnsignedInteger16(stream, &exiFrag->X509IssuerName.charactersLen);
						if (errn == 0) {
							if (exiFrag->X509IssuerName.charactersLen >= 2) {
								exiFrag->X509IssuerName.charactersLen = (uint16_t)(exiFrag->X509IssuerName.charactersLen - 2); /* string table miss */
								errn = decodeCharacters(stream, exiFrag->X509IssuerName.charactersLen, exiFrag->X509IssuerName.characters, iso2EXIFragment_X509IssuerName_CHARACTERS_SIZE);
							} else {
								/* string table hit */
								errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
							}
						}
						exiFrag->X509IssuerName_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 330:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509IssuerSerial) */
				errn = decode_iso2X509IssuerSerialType(stream, &exiFrag->X509IssuerSerial);
				exiFrag->X509IssuerSerial_isUsed = 1u;
				break;
			case 331:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SKI) */
				/* First(xsi:type)StartTag[CHARACTERS[BINARY_BASE64]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeUnsignedInteger16(stream, &exiFrag->X509SKI.bytesLen);
						if (errn == 0) {
							errn =  (exiFrag->X509SKI.bytesLen) <= iso2EXIFragment_X509SKI_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
						}
						if (errn == 0) {
							errn = decodeBytes(stream, exiFrag->X509SKI.bytesLen, exiFrag->X509SKI.bytes);
						}
						exiFrag->X509SKI_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 332:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SerialNumber) */
				/* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeInteger64(stream, &exiFrag->X509SerialNumber);
						exiFrag->X509SerialNumber_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 333:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}X509SubjectName) */
				/* First(xsi:type)StartTag[CHARACTERS[STRING]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeUnsignedInteger16(stream, &exiFrag->X509SubjectName.charactersLen);
						if (errn == 0) {
							if (exiFrag->X509SubjectName.charactersLen >= 2) {
								exiFrag->X509SubjectName.charactersLen = (uint16_t)(exiFrag->X509SubjectName.charactersLen - 2); /* string table miss */
								errn = decodeCharacters(stream, exiFrag->X509SubjectName.charactersLen, exiFrag->X509SubjectName.characters, iso2EXIFragment_X509SubjectName_CHARACTERS_SIZE);
							} else {
								/* string table hit */
								errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
							}
						}
						exiFrag->X509SubjectName_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 334:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}XCoordinate) */
				/* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeInteger16(stream, &exiFrag->XCoordinate);
						exiFrag->XCoordinate_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 335:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}XPath) */
				/* First(xsi:type)StartTag[CHARACTERS[STRING]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeUnsignedInteger16(stream, &exiFrag->XPath.charactersLen);
						if (errn == 0) {
							if (exiFrag->XPath.charactersLen >= 2) {
								exiFrag->XPath.charactersLen = (uint16_t)(exiFrag->XPath.charactersLen - 2); /* string table miss */
								errn = decodeCharacters(stream, exiFrag->XPath.charactersLen, exiFrag->XPath.characters, iso2EXIFragment_XPath_CHARACTERS_SIZE);
							} else {
								/* string table hit */
								errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
							}
						}
						exiFrag->XPath_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 336:
				/* START_ELEMENT({http://www.w3.org/2000/09/xmldsig#}Y) */
				/* FirstStartTag[CHARACTERS[BINARY_BASE64]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeUnsignedInteger16(stream, &exiFrag->Y.bytesLen);
						if (errn == 0) {
							errn =  (exiFrag->Y.bytesLen) <= iso2EXIFragment_Y_BYTES_SIZE ? 0 : EXI_ERROR_OUT_OF_BYTE_BUFFER;
						}
						if (errn == 0) {
							errn = decodeBytes(stream, exiFrag->Y.bytesLen, exiFrag->Y.bytes);
						}
						exiFrag->Y_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 337:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}YCoordinate) */
				/* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeInteger16(stream, &exiFrag->YCoordinate);
						exiFrag->YCoordinate_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 338:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}ZCoordinate) */
				/* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeInteger16(stream, &exiFrag->ZCoordinate);
						exiFrag->ZCoordinate_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 339:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}amount) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->amount);
				exiFrag->amount_isUsed = 1u;
				break;
			case 340:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}boolValue) */
				/* FirstStartTag[CHARACTERS[BOOLEAN]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeBoolean(stream, &exiFrag->boolValue);
						exiFrag->boolValue_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 341:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}byteValue) */
				/* First(xsi:type)StartTag[CHARACTERS[NBIT_UNSIGNED_INTEGER]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeNBitUnsignedInteger(stream, 8, &(uint32));
						exiFrag->byteValue = (int8_t)(uint32 -128);
						exiFrag->byteValue_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 342:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}costKind) */
				/* FirstStartTag[CHARACTERS[ENUMERATION]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeNBitUnsignedInteger(stream, 2, &uint32);
						exiFrag->costKind = (iso2costKindType) uint32;
						exiFrag->costKind_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 343:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}duration) */
				/* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeUnsignedInteger32(stream, &exiFrag->duration);
						exiFrag->duration_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 344:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgBody}eMAID) */
				errn = decode_iso2EMAIDType(stream, &exiFrag->eMAID);
				exiFrag->eMAID_isUsed = 1u;
				break;
			case 345:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}intValue) */
				/* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeInteger32(stream, &exiFrag->intValue);
						exiFrag->intValue_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 346:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}physicalValue) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->physicalValue);
				exiFrag->physicalValue_isUsed = 1u;
				break;
			case 347:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}shortValue) */
				/* First(xsi:type)StartTag[CHARACTERS[INTEGER]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeInteger16(stream, &exiFrag->shortValue);
						exiFrag->shortValue_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 348:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}start) */
				/* FirstStartTag[CHARACTERS[UNSIGNED_INTEGER]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeUnsignedInteger32(stream, &exiFrag->start);
						exiFrag->start_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			case 349:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}startValue) */
				errn = decode_iso2PhysicalValueType(stream, &exiFrag->startValue);
				exiFrag->startValue_isUsed = 1u;
				break;
			case 350:
				/* START_ELEMENT({urn:iso:15118:2:2016:MsgDataTypes}stringValue) */
				/* First(xsi:type)StartTag[CHARACTERS[STRING]] */
				errn = decodeNBitUnsignedInteger(stream, 1, &eventCode);
				if(errn == 0) {
					if(eventCode == 0) {
						errn = decodeUnsignedInteger16(stream, &exiFrag->stringValue.charactersLen);
						if (errn == 0) {
							if (exiFrag->stringValue.charactersLen >= 2) {
								exiFrag->stringValue.charactersLen = (uint16_t)(exiFrag->stringValue.charactersLen - 2); /* string table miss */
								errn = decodeCharacters(stream, exiFrag->stringValue.charactersLen, exiFrag->stringValue.characters, iso2EXIFragment_stringValue_CHARACTERS_SIZE);
							} else {
								/* string table hit */
								errn = EXI_ERROR_STRINGVALUES_NOT_SUPPORTED;
							}
						}
						exiFrag->stringValue_isUsed = 1u;
					} else {
						/* Second level event (e.g., xsi:type, xsi:nil, ...) */
						errn = EXI_UNSUPPORTED_EVENT_CODE_CHARACTERISTICS;
					}
				}
				break;
			default:
				errn = EXI_ERROR_UNEXPECTED_EVENT_LEVEL1;
				break;
			}
		}
		if(errn == 0) {
			/* EndDocument */
			errn = decodeNBitUnsignedInteger(stream, 9, &eventCode);
			if (eventCode != 352) {
				errn = EXI_UNSUPPORTED_FRAGMENT_ELEMENT;
			}
		}

	}

	(void)exiFrag; /* avoid unused warning */

	return errn;
}
#endif /* DEPLOY_ISO2_CODEC_FRAGMENT */


#endif /* DEPLOY_ISO2_CODEC */

#endif

