First code commit
diff --git a/GTPv2_v15.2.0_CNL113870.tpd b/GTPv2_v15.2.0_CNL113870.tpd
new file mode 100644
index 0000000..7957345
--- /dev/null
+++ b/GTPv2_v15.2.0_CNL113870.tpd
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<TITAN_Project_File_Information version="1.0">
+  <ProjectName>GTPv2_v15.2.0_CNL113870</ProjectName>
+  <ReferencedProjects>
+    <ReferencedProject name="GTPv2_PrivateExtensions_CNL113798" projectLocationURI="../GTPv2_PrivateExtensions_CNL113798/GTPv2_PrivateExtensions_CNL113798.tpd"/>
+    <ReferencedProject name="ProtocolModules_Common" projectLocationURI="../COMMON/ProtocolModules_Common.tpd"/>
+  </ReferencedProjects>
+  <Files>
+    <FileResource projectRelativePath="GTPv2_Types.ttcn" relativeURI="src/GTPv2_Types.ttcn"/>
+  </Files>
+  <ActiveConfiguration>Default</ActiveConfiguration>
+  <Configurations>
+    <Configuration name="Default">
+      <ProjectProperties>
+        <MakefileSettings>
+          <generateInternalMakefile>true</generateInternalMakefile>
+          <GNUMake>true</GNUMake>
+          <incrementalDependencyRefresh>true</incrementalDependencyRefresh>
+          <targetExecutable>bin/GTPv2_v15.2.0_CNL113870</targetExecutable>
+          <buildLevel>Level3-Creatingobjectfileswithdependencyupdate</buildLevel>
+        </MakefileSettings>
+        <LocalBuildSettings>
+          <workingDirectory>bin</workingDirectory>
+        </LocalBuildSettings>
+      </ProjectProperties>
+    </Configuration>
+  </Configurations>
+</TITAN_Project_File_Information>
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..3534f2f
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,277 @@
+Eclipse Public License - v 2.0

+

+    THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE

+    PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION

+    OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.

+

+1. DEFINITIONS

+

+"Contribution" means:

+

+  a) in the case of the initial Contributor, the initial content

+     Distributed under this Agreement, and

+

+  b) in the case of each subsequent Contributor:

+     i) changes to the Program, and

+     ii) additions to the Program;

+  where such changes and/or additions to the Program originate from

+  and are Distributed by that particular Contributor. A Contribution

+  "originates" from a Contributor if it was added to the Program by

+  such Contributor itself or anyone acting on such Contributor's behalf.

+  Contributions do not include changes or additions to the Program that

+  are not Modified Works.

+

+"Contributor" means any person or entity that Distributes the Program.

+

+"Licensed Patents" mean patent claims licensable by a Contributor which

+are necessarily infringed by the use or sale of its Contribution alone

+or when combined with the Program.

+

+"Program" means the Contributions Distributed in accordance with this

+Agreement.

+

+"Recipient" means anyone who receives the Program under this Agreement

+or any Secondary License (as applicable), including Contributors.

+

+"Derivative Works" shall mean any work, whether in Source Code or other

+form, that is based on (or derived from) the Program and for which the

+editorial revisions, annotations, elaborations, or other modifications

+represent, as a whole, an original work of authorship.

+

+"Modified Works" shall mean any work in Source Code or other form that

+results from an addition to, deletion from, or modification of the

+contents of the Program, including, for purposes of clarity any new file

+in Source Code form that contains any contents of the Program. Modified

+Works shall not include works that contain only declarations,

+interfaces, types, classes, structures, or files of the Program solely

+in each case in order to link to, bind by name, or subclass the Program

+or Modified Works thereof.

+

+"Distribute" means the acts of a) distributing or b) making available

+in any manner that enables the transfer of a copy.

+

+"Source Code" means the form of a Program preferred for making

+modifications, including but not limited to software source code,

+documentation source, and configuration files.

+

+"Secondary License" means either the GNU General Public License,

+Version 2.0, or any later versions of that license, including any

+exceptions or additional permissions as identified by the initial

+Contributor.

+

+2. GRANT OF RIGHTS

+

+  a) Subject to the terms of this Agreement, each Contributor hereby

+  grants Recipient a non-exclusive, worldwide, royalty-free copyright

+  license to reproduce, prepare Derivative Works of, publicly display,

+  publicly perform, Distribute and sublicense the Contribution of such

+  Contributor, if any, and such Derivative Works.

+

+  b) Subject to the terms of this Agreement, each Contributor hereby

+  grants Recipient a non-exclusive, worldwide, royalty-free patent

+  license under Licensed Patents to make, use, sell, offer to sell,

+  import and otherwise transfer the Contribution of such Contributor,

+  if any, in Source Code or other form. This patent license shall

+  apply to the combination of the Contribution and the Program if, at

+  the time the Contribution is added by the Contributor, such addition

+  of the Contribution causes such combination to be covered by the

+  Licensed Patents. The patent license shall not apply to any other

+  combinations which include the Contribution. No hardware per se is

+  licensed hereunder.

+

+  c) Recipient understands that although each Contributor grants the

+  licenses to its Contributions set forth herein, no assurances are

+  provided by any Contributor that the Program does not infringe the

+  patent or other intellectual property rights of any other entity.

+  Each Contributor disclaims any liability to Recipient for claims

+  brought by any other entity based on infringement of intellectual

+  property rights or otherwise. As a condition to exercising the

+  rights and licenses granted hereunder, each Recipient hereby

+  assumes sole responsibility to secure any other intellectual

+  property rights needed, if any. For example, if a third party

+  patent license is required to allow Recipient to Distribute the

+  Program, it is Recipient's responsibility to acquire that license

+  before distributing the Program.

+

+  d) Each Contributor represents that to its knowledge it has

+  sufficient copyright rights in its Contribution, if any, to grant

+  the copyright license set forth in this Agreement.

+

+  e) Notwithstanding the terms of any Secondary License, no

+  Contributor makes additional grants to any Recipient (other than

+  those set forth in this Agreement) as a result of such Recipient's

+  receipt of the Program under the terms of a Secondary License

+  (if permitted under the terms of Section 3).

+

+3. REQUIREMENTS

+

+3.1 If a Contributor Distributes the Program in any form, then:

+

+  a) the Program must also be made available as Source Code, in

+  accordance with section 3.2, and the Contributor must accompany

+  the Program with a statement that the Source Code for the Program

+  is available under this Agreement, and informs Recipients how to

+  obtain it in a reasonable manner on or through a medium customarily

+  used for software exchange; and

+

+  b) the Contributor may Distribute the Program under a license

+  different than this Agreement, provided that such license:

+     i) effectively disclaims on behalf of all other Contributors all

+     warranties and conditions, express and implied, including

+     warranties or conditions of title and non-infringement, and

+     implied warranties or conditions of merchantability and fitness

+     for a particular purpose;

+

+     ii) effectively excludes on behalf of all other Contributors all

+     liability for damages, including direct, indirect, special,

+     incidental and consequential damages, such as lost profits;

+

+     iii) does not attempt to limit or alter the recipients' rights

+     in the Source Code under section 3.2; and

+

+     iv) requires any subsequent distribution of the Program by any

+     party to be under a license that satisfies the requirements

+     of this section 3.

+

+3.2 When the Program is Distributed as Source Code:

+

+  a) it must be made available under this Agreement, or if the

+  Program (i) is combined with other material in a separate file or

+  files made available under a Secondary License, and (ii) the initial

+  Contributor attached to the Source Code the notice described in

+  Exhibit A of this Agreement, then the Program may be made available

+  under the terms of such Secondary Licenses, and

+

+  b) a copy of this Agreement must be included with each copy of

+  the Program.

+

+3.3 Contributors may not remove or alter any copyright, patent,

+trademark, attribution notices, disclaimers of warranty, or limitations

+of liability ("notices") contained within the Program from any copy of

+the Program which they Distribute, provided that Contributors may add

+their own appropriate notices.

+

+4. COMMERCIAL DISTRIBUTION

+

+Commercial distributors of software may accept certain responsibilities

+with respect to end users, business partners and the like. While this

+license is intended to facilitate the commercial use of the Program,

+the Contributor who includes the Program in a commercial product

+offering should do so in a manner which does not create potential

+liability for other Contributors. Therefore, if a Contributor includes

+the Program in a commercial product offering, such Contributor

+("Commercial Contributor") hereby agrees to defend and indemnify every

+other Contributor ("Indemnified Contributor") against any losses,

+damages and costs (collectively "Losses") arising from claims, lawsuits

+and other legal actions brought by a third party against the Indemnified

+Contributor to the extent caused by the acts or omissions of such

+Commercial Contributor in connection with its distribution of the Program

+in a commercial product offering. The obligations in this section do not

+apply to any claims or Losses relating to any actual or alleged

+intellectual property infringement. In order to qualify, an Indemnified

+Contributor must: a) promptly notify the Commercial Contributor in

+writing of such claim, and b) allow the Commercial Contributor to control,

+and cooperate with the Commercial Contributor in, the defense and any

+related settlement negotiations. The Indemnified Contributor may

+participate in any such claim at its own expense.

+

+For example, a Contributor might include the Program in a commercial

+product offering, Product X. That Contributor is then a Commercial

+Contributor. If that Commercial Contributor then makes performance

+claims, or offers warranties related to Product X, those performance

+claims and warranties are such Commercial Contributor's responsibility

+alone. Under this section, the Commercial Contributor would have to

+defend claims against the other Contributors related to those performance

+claims and warranties, and if a court requires any other Contributor to

+pay any damages as a result, the Commercial Contributor must pay

+those damages.

+

+5. NO WARRANTY

+

+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT

+PERMITTED BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN "AS IS"

+BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR

+IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF

+TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR

+PURPOSE. Each Recipient is solely responsible for determining the

+appropriateness of using and distributing the Program and assumes all

+risks associated with its exercise of rights under this Agreement,

+including but not limited to the risks and costs of program errors,

+compliance with applicable laws, damage to or loss of data, programs

+or equipment, and unavailability or interruption of operations.

+

+6. DISCLAIMER OF LIABILITY

+

+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT

+PERMITTED BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS

+SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,

+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST

+PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN

+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)

+ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE

+EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE

+POSSIBILITY OF SUCH DAMAGES.

+

+7. GENERAL

+

+If any provision of this Agreement is invalid or unenforceable under

+applicable law, it shall not affect the validity or enforceability of

+the remainder of the terms of this Agreement, and without further

+action by the parties hereto, such provision shall be reformed to the

+minimum extent necessary to make such provision valid and enforceable.

+

+If Recipient institutes patent litigation against any entity

+(including a cross-claim or counterclaim in a lawsuit) alleging that the

+Program itself (excluding combinations of the Program with other software

+or hardware) infringes such Recipient's patent(s), then such Recipient's

+rights granted under Section 2(b) shall terminate as of the date such

+litigation is filed.

+

+All Recipient's rights under this Agreement shall terminate if it

+fails to comply with any of the material terms or conditions of this

+Agreement and does not cure such failure in a reasonable period of

+time after becoming aware of such noncompliance. If all Recipient's

+rights under this Agreement terminate, Recipient agrees to cease use

+and distribution of the Program as soon as reasonably practicable.

+However, Recipient's obligations under this Agreement and any licenses

+granted by Recipient relating to the Program shall continue and survive.

+

+Everyone is permitted to copy and distribute copies of this Agreement,

+but in order to avoid inconsistency the Agreement is copyrighted and

+may only be modified in the following manner. The Agreement Steward

+reserves the right to publish new versions (including revisions) of

+this Agreement from time to time. No one other than the Agreement

+Steward has the right to modify this Agreement. The Eclipse Foundation

+is the initial Agreement Steward. The Eclipse Foundation may assign the

+responsibility to serve as the Agreement Steward to a suitable separate

+entity. Each new version of the Agreement will be given a distinguishing

+version number. The Program (including Contributions) may always be

+Distributed subject to the version of the Agreement under which it was

+received. In addition, after a new version of the Agreement is published,

+Contributor may elect to Distribute the Program (including its

+Contributions) under the new version.

+

+Except as expressly stated in Sections 2(a) and 2(b) above, Recipient

+receives no rights or licenses to the intellectual property of any

+Contributor under this Agreement, whether expressly, by implication,

+estoppel or otherwise. All rights in the Program not expressly granted

+under this Agreement are reserved. Nothing in this Agreement is intended

+to be enforceable by any entity that is not a Contributor or Recipient.

+No third-party beneficiary rights are created under this Agreement.

+

+Exhibit A - Form of Secondary Licenses Notice

+

+"This Source Code may also be made available under the following 

+Secondary Licenses when the conditions for such availability set forth 

+in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),

+version(s), and exceptions or additional permissions here}."

+

+  Simply including a copy of this Agreement, including this Exhibit A

+  is not sufficient to license the Source Code under Secondary Licenses.

+

+  If it is not possible or desirable to put the notice in a particular

+  file, then You may include the notice in a location (such as a LICENSE

+  file in a relevant directory) where a recipient would be likely to

+  look for such a notice.

+

+  You may add additional accurate notices of copyright ownership.
\ No newline at end of file
diff --git a/doc/GTPv2_v15.2.0_CNL113870_1551.doc b/doc/GTPv2_v15.2.0_CNL113870_1551.doc
new file mode 100644
index 0000000..aa63564
--- /dev/null
+++ b/doc/GTPv2_v15.2.0_CNL113870_1551.doc
Binary files differ
diff --git a/doc/GTPv2_v15.2.0_CNL113870_PRI.doc b/doc/GTPv2_v15.2.0_CNL113870_PRI.doc
new file mode 100644
index 0000000..5ffc9f7
--- /dev/null
+++ b/doc/GTPv2_v15.2.0_CNL113870_PRI.doc
Binary files differ
diff --git a/src/GTPv2_Types.ttcn b/src/GTPv2_Types.ttcn
new file mode 100644
index 0000000..cd74984
--- /dev/null
+++ b/src/GTPv2_Types.ttcn
@@ -0,0 +1,4980 @@
+///////////////////////////////////////////////////////////////////////////////
+// Copyright (c) 2000-2018 Ericsson Telecom AB
+// All rights reserved. This program and the accompanying materials
+// are made available under the terms of the Eclipse Public License v2.0
+// which accompanies this distribution, and is available at
+// https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html
+///////////////////////////////////////////////////////////////////////////////
+//
+//  File:               GTPv2_Types.ttcn
+//  Description:        GTPv2 protocol module
+//  Rev:                <RnXnn>
+//  Prodnr:             CNL 113 870 
+//  Contact:            http://ttcn.ericsson.se
+//  Reference:          3GPP TS 29.274 v15.2.0
+//                      
+
+
+module GTPv2_Types
+{
+import from General_Types all;
+import from GTPv2_PrivateExtensions all;
+
+external function enc_PDU_GTPCv2(in PDU_GTPCv2 pdu) return octetstring
+with { extension "prototype(convert)" extension "encode(RAW)" }
+
+external function dec_PDU_GTPCv2(in octetstring stream) return PDU_GTPCv2
+with { extension "prototype(convert)" extension "decode(RAW)" }
+
+external function enc_PDU_GTPCv2_fast(in PDU_GTPCv2 pdu, out octetstring stream)
+with { extension "prototype(fast) encode(RAW)" }
+
+external function dec_PDU_GTPCv2_backtrack(in octetstring stream, out PDU_GTPCv2 pdu) return integer
+with { extension "prototype(backtrack) decode(RAW)" }
+
+
+// Information Elements
+
+//8.2.1A For future use
+type record Special_IE_Type_Extension
+{
+  OCT1                         elementIdentifier,  // dec 254, 'FE'O;  
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare,
+  IE_Extension_UnionType       iE_Type_Extension
+} with { 
+  variant (lengthIndicator) "LENGTHTO(iE_Type_Extension)"; 
+  variant "PRESENCE (elementIdentifier = 'FE'O; )";
+};
+
+type union IE_Extension_UnionType
+{
+  IE_Type_Extension  iE_Type_Extension
+}
+
+type record IE_Type_Extension
+{
+  OCT2                         elementIdentifier,
+  octetstring                  valueField
+}
+
+// 8.3
+type record IMSI
+{
+  OCT1              elementIdentifier,  //dec 1, '01'O  
+  LIN2_BO_LAST      lengthIndicator,
+  BIT4              instance,
+  BIT4              spare,
+  hexstring         iMSI_Value 
+} with { 
+  variant "PRESENCE (elementIdentifier = '01'O;)"   
+  variant (lengthIndicator) "LENGTHTO(iMSI_Value)" 
+  variant (iMSI_Value) "PADDING(yes)";
+  variant (iMSI_Value) "PADDING_PATTERN('1'B)"
+};
+
+// 8.4
+type record Cause
+{
+  OCT1              elementIdentifier, //dec 2, '02'O  
+  LIN2_BO_LAST      lengthIndicator,
+  BIT4              instance,
+  BIT4              spare,
+  OCT1              causeValue,
+  BIT1              cS,
+  BIT1              bCE,
+  BIT1              pCE,
+  BIT5              spare2,
+  OCT1              typeOfOffendingIE optional,
+  LIN2_BO_LAST      lengthIndicator2 optional,
+  BIT4              instanceOfOffendingIE optional,
+  BIT4              spare3 optional
+} with { 
+  variant "PRESENCE (elementIdentifier = '02'O; )" 
+  variant (lengthIndicator) "LENGTHTO(causeValue,cS,bCE,pCE,spare2,typeOfOffendingIE,
+  lengthIndicator2,instanceOfOffendingIE,spare3 )" 
+};
+
+// 8.5
+type record Recovery
+{
+  OCT1              elementIdentifier,  // dec 3, '03'O 
+  LIN2_BO_LAST      lengthIndicator,
+  BIT4              instance,
+  BIT4              spare,
+  integer           recoveryValue
+} with { 
+  variant (lengthIndicator) "LENGTHTO(recoveryValue)"
+  variant "PRESENCE (elementIdentifier = '03'O; )" 
+}; 
+
+// 8.6 
+type record AccessPointName
+{
+  OCT1              elementIdentifier, // dec 71, '47'O
+  LIN2_BO_LAST      lengthIndicator,
+  BIT4              instance,
+  BIT4              spare,
+  octetstring       aPN_Value 
+} with { 
+  variant (lengthIndicator) "LENGTHTO(aPN_Value)"
+  variant "PRESENCE (elementIdentifier = '47'O; )"   
+}; 
+
+// 8.7 
+type record AggregateMaximumBitRate
+{
+  OCT1              elementIdentifier, // dec 72, '48'O  
+  LIN2_BO_LAST      lengthIndicator,
+  BIT4              instance,
+  BIT4              spare,
+  OCT4              aPN_AMBR_for_uplink, 
+  OCT4              aPN_AMBR_for_downlink
+} with { 
+  variant (lengthIndicator) "LENGTHTO(aPN_AMBR_for_uplink,aPN_AMBR_for_downlink)"
+  variant "PRESENCE (elementIdentifier = '48'O; )" 
+}; 
+
+//8.8
+type record EPS_BearerID
+{
+  OCT1              elementIdentifier, // dec 73, '49'O  
+  LIN2_BO_LAST      lengthIndicator,
+  BIT4              instance,
+  BIT4              spare,
+  integer           ePS_Bearer_ID_Value,
+  BIT4              spare2,   //'0000'B
+  octetstring       additionalOctets  optional 
+}with { 
+  variant (lengthIndicator) "LENGTHTO(ePS_Bearer_ID_Value,spare2,additionalOctets)"
+  variant "PRESENCE (elementIdentifier = '49'O; )"
+  variant(ePS_Bearer_ID_Value) "FIELDLENGTH(4)"; 
+};
+
+type set of EPS_BearerID EPS_BearerID_List;
+
+//8.9
+type union IPv4_IPv6_Address{
+  OCT4                       iPv4_Address,
+  OCT16                      iPv6_Address
+};
+
+type record IP_Address
+{
+  OCT1                elementIdentifier,  // dec 74, '4A'O   
+  LIN2_BO_LAST        lengthIndicator,
+  BIT4                instance,
+  BIT4                spare,
+  IPv4_IPv6_Address   iPv4_IPv6_Address
+} with { 
+  variant (lengthIndicator) "LENGTHTO(iPv4_IPv6_Address)"
+  variant "PRESENCE (elementIdentifier = '4A'O; )" 
+  variant (iPv4_IPv6_Address) "CROSSTAG( iPv4_Address, lengthIndicator = 4;
+  iPv6_Address, lengthIndicator = 16)"
+};
+
+type set of IP_Address IP_Address_List;
+
+//8.10
+type record MEI
+{
+  OCT1                elementIdentifier, // dec 75, '4B'O;
+  LIN2_BO_LAST        lengthIndicator,
+  BIT4                instance,
+  BIT4                spare,
+  octetstring         mEI_Value
+} with { 
+  variant (lengthIndicator) "LENGTHTO(mEI_Value)"
+  variant "PRESENCE (elementIdentifier = '4B'O; )" 
+};
+
+//8.11
+type record MSISDN
+{
+  OCT1                elementIdentifier,  // dec 76, '4C'O; 
+  LIN2_BO_LAST        lengthIndicator,
+  BIT4                instance,
+  BIT4                spare,
+  hexstring           mSISDN_Value 
+}  with { 
+  variant (lengthIndicator) "LENGTHTO(mSISDN_Value)"
+  variant "PRESENCE (elementIdentifier = '4C'O; )" 
+  variant (mSISDN_Value) "PADDING(yes)";
+  variant (mSISDN_Value) "PADDING_PATTERN('1'B)"  
+
+};
+
+type set of MSISDN MSISDN_List;
+
+//8.12
+type record Indication
+{
+  OCT1                elementIdentifier,   // dec 77, '4D'O; 
+  LIN2_BO_LAST        lengthIndicator,
+  BIT4                instance,
+  BIT4                spare,
+  BIT1                sGWCI,
+  BIT1                iSRAI,
+  BIT1                iSRSI,
+  BIT1                oI,           
+  BIT1                dFI,
+  BIT1                hI,
+  BIT1                dTF,
+  BIT1                dAF,
+  BIT1                mSV,
+  BIT1                sI,
+  BIT1                pT,
+  BIT1                pBit,
+  BIT1                cRSI,
+  BIT1                cFSI,
+  BIT1                uIMSI,
+  BIT1                sQCI,
+  BIT1                cCRSI optional,
+  BIT1                iSRAU optional, 
+  BIT1                mBMDT optional,
+  BIT1                s4AF optional,
+  BIT1                s6AF optional,
+  BIT1                sRNI optional,
+  BIT1                pBIC optional,
+  BIT1                retLoc optional, 
+  BIT1                cPSR optional,
+  BIT1                cLII optional,
+  BIT1                cSFBI optional, 
+  BIT1                pPSI optional, 
+  BIT1                pPON_PPEI optional, 
+  BIT1                pPOF optional, 
+  BIT1                aRRL optional, 
+  BIT1                cPRAI optional, 
+  BIT1                aOPI optional, 
+  BIT1                aOSI optional, 
+  BIT1                pCRI optional,
+  BIT1                pSCI optional,
+  BIT1                bDWI optional,
+  BIT1                dTCI optional,
+  BIT1                uASI optional,
+  BIT1                nSI optional,
+  BIT1                wPMSI optional,
+  BIT1                uNACCSI optional,
+  BIT1                pNSI optional,
+  BIT1                s11TF optional,
+  BIT1                pMTSMI optional,
+  BIT1                cPOPCI optional,
+  BIT1                ePCOSI optional,
+  BIT1                rOAAI optional,
+  BIT1                tSPCMI optional,
+  BIT1                eNBCRSI optional,
+  BIT1                spare_1 optional,
+  BIT1                spare_2 optional,
+  BIT1                spare_3 optional,
+  BIT1                spare_4 optional,
+  BIT1                spare_5 optional,
+  BIT1                spare_6 optional,
+  octetstring         additionalOctets  optional   
+} with { 
+  variant (lengthIndicator) "LENGTHTO(sGWCI,iSRAI,iSRSI,oI,dFI,hI,dTF,dAF,
+  mSV,sI,pT,pBit,cRSI,cFSI,uIMSI,sQCI, 
+  cCRSI, iSRAU,mBMDT,s4AF,s6AF,sRNI,pBIC,retLoc,
+  cPSR,cLII,cSFBI,pPSI,pPON_PPEI,pPOF,aRRL,cPRAI,aOPI,aOSI,pCRI,pSCI,bDWI,dTCI,uASI,nSI,
+  wPMSI,uNACCSI,pNSI,s11TF,pMTSMI,cPOPCI,ePCOSI,rOAAI, tSPCMI, eNBCRSI, spare_1, spare_2, spare_3, spare_4, spare_5, spare_6, additionalOctets)"
+  variant "PRESENCE (elementIdentifier = '4D'O; )"
+};
+
+type set of Indication Indication_List;
+
+//8.13
+// 24.301 (9.9.4.8) -> 24.008 (10.5.6.3)
+type set of  ProtocolID_or_ContainerID   ProtocolIDs_and_ContainerIDs;
+
+type record ProtocolID_or_ContainerID
+{
+  OCT2               protocolID_or_ContainerID,
+  LIN1               lengthIndicator,
+  octetstring        protID_orContID_Contents
+} with { variant (lengthIndicator) "LENGTHTO (protID_orContID_Contents)"};
+
+type record ProtocolConfigOptions
+{
+  OCT1                         elementIdentifier, // dec 78 '4E'O;
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare,
+  BIT3                         configProtocol,
+  BIT4                         spare2,  //'0000'B
+  BIT1                         extensionField,   //'1'B
+  ProtocolIDs_and_ContainerIDs protocolIDs_and_ContainerIDs optional
+} with { 
+  variant (lengthIndicator) "LENGTHTO(configProtocol,spare2,extensionField,protocolIDs_and_ContainerIDs)"
+  variant "PRESENCE (elementIdentifier = '4E'O; )" 
+};
+
+//8.14 
+type union PDN_Address_and_Prefix{
+  OCT4                       iPv4_Address,
+  IPv6                       iPv6_Address,
+  IPv4_IPv6                  iPv4_IPv6 
+};
+
+type record IPv6
+{
+  integer   prefixLength, 
+  OCT16     iPv6_Address 
+};
+
+type record IPv4_IPv6
+{
+  integer          prefixLength, 
+  OCT16            iPv6_Address, 
+  OCT4             iPv4_Address
+};
+
+type record PDN_AddressAllocation
+{
+  OCT1                         elementIdentifier,  // dec 79 '4F'O;
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare, 
+  BIT3                         pDN_Type,
+  BIT5                         spare2,  //'00000'B
+  PDN_Address_and_Prefix       pDN_Address_and_Prefix optional
+} with { 
+  variant (lengthIndicator) "LENGTHTO(pDN_Type,spare2,pDN_Address_and_Prefix)"
+  variant "PRESENCE (elementIdentifier = '4F'O; )"
+  variant (pDN_Address_and_Prefix) "CROSSTAG
+  (
+  iPv4_Address,             pDN_Type ='001'B;
+  iPv6_Address,             pDN_Type ='010'B;
+  iPv4_IPv6,                pDN_Type ='011'B;  
+  )"
+};
+
+//8.15
+type record Bearer_QoS
+{
+  OCT1                         elementIdentifier,  // dec 80 '50'O; 
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare,
+  BIT1                         pVI,
+  BIT1                         spare2,
+  BIT4                         pL,
+  BIT1                         pCI,
+  BIT1                         spare3,  
+  OCT1                         labelQCI,
+  OCT5                         maxBitrateUplink,
+  OCT5                         maxBitrateDownLink,
+  OCT5                         guaranteedBitrateUplink,
+  OCT5                         guaranteedBitrateDownLink,
+  octetstring                  additionalOctets optional  
+} with { 
+  variant (lengthIndicator) "LENGTHTO(pVI,spare2,pL,pCI,spare3,
+  labelQCI,maxBitrateUplink,maxBitrateDownLink,
+  guaranteedBitrateUplink,guaranteedBitrateDownLink,additionalOctets)"
+  variant "PRESENCE (elementIdentifier = '50'O; )" 
+};
+
+//8.16
+type record FlowQoS
+{
+  OCT1                         elementIdentifier,  // dec 81 '51'O;  
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare,
+  OCT1                         labelQCI,
+  OCT5                         maxBitrateUplink,
+  OCT5                         maxBitrateDownLink,
+  OCT5                         guaranteedBitrateUplink,
+  OCT5                         guaranteedBitrateDownLink,
+  octetstring                  additionalOctets  optional  
+}with { 
+  variant (lengthIndicator) "LENGTHTO(labelQCI,maxBitrateUplink,maxBitrateDownLink,guaranteedBitrateUplink,guaranteedBitrateDownLink,additionalOctets)"
+  variant "PRESENCE (elementIdentifier = '51'O; )" 
+};
+
+//8.17
+type record RAT_Type
+{
+  OCT1                         elementIdentifier,  // dec 82, '52'O;   
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare,
+  integer                      rAT_TypeValue,
+  octetstring                  additionalOctets  optional 
+} with { 
+  variant (lengthIndicator) "LENGTHTO(rAT_TypeValue,additionalOctets)"
+  variant "PRESENCE (elementIdentifier = '52'O; )" 
+};
+
+//8.18
+type record ServingNetwork
+{
+  OCT1                         elementIdentifier,   // dec 83, '53'O;   
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare,
+  HEX1                         mccDigit1,  
+  HEX1                         mccDigit2,
+  HEX1                         mccDigit3,
+  HEX1                         mncDigit3,
+  HEX1                         mncDigit1,
+  HEX1                         mncDigit2,
+  octetstring                  additionalOctets  optional 
+}with { 
+  variant (lengthIndicator) "LENGTHTO(mccDigit1,mccDigit2,mccDigit3,mncDigit3,mncDigit1,mncDigit2,additionalOctets)"
+  variant "PRESENCE (elementIdentifier = '53'O; )" 
+};
+
+//8.19 24.008 10.5.6.12
+type union TrafficFlowTemplateV
+{
+  TrafficFlowTemplateV_CreateAddReplaceTFT
+  trafficFlowTemplateV_CreateAddReplaceTFT,
+  TrafficFlowTemplateV_DeletePacketFilter
+  trafficFlowTemplateV_DeletePacketFilter,
+  TrafficFlowTemplateV_Delete_Existing_TFT_or_No_TFT_Operation
+  trafficFlowTemplateV_Delete_Existing_TFT_or_No_TFT_Operation
+};
+
+
+type record TrafficFlowTemplateV_CreateAddReplaceTFT
+{
+  integer                                numberOfPacketFilters,
+  BIT1                                   eBIT,
+  BIT3                                   operationCodeTFT, 
+  PacketFilterList_CreateAddReplaceTFT   packetFilterList_CreateAddReplaceTFT,
+  ParametersList                         parametersList            optional
+} with {
+  variant "PRESENCE (operationCodeTFT  = '001'B, //  Create New TFT
+  operationCodeTFT  = '011'B, //  Add packet filters to existing TFT
+  operationCodeTFT  = '100'B  //  Replace packet filters in existing TFT
+  )";
+  variant(parametersList)       "PRESENCE(eBIT = '1'B)";
+  variant(numberOfPacketFilters)"FIELDLENGTH(4)";
+  variant(numberOfPacketFilters)"LENGTHTO(packetFilterList_CreateAddReplaceTFT)";
+  variant(numberOfPacketFilters)"UNIT(elements)";
+};
+
+
+type record TrafficFlowTemplateV_DeletePacketFilter
+{
+  integer                                numberOfPacketFilters,
+  BIT1                                   eBIT,
+  BIT3                                   operationCodeTFT,
+  //'101'B or '011'B or '100'B
+  PacketFilterList_DeletePacketFilter    packetFilterList_DeletePacketFilter,
+  ParametersList                         parametersList         optional
+} with {
+  variant "PRESENCE (operationCodeTFT = '101'B)"  // Delete packet filters from existing TFT
+  variant(parametersList) "PRESENCE(eBIT = '1'B)";
+  variant(numberOfPacketFilters)"FIELDLENGTH(4)";
+  variant(numberOfPacketFilters)"LENGTHTO(packetFilterList_DeletePacketFilter)";
+  variant  (numberOfPacketFilters)"UNIT(elements)";
+};
+
+
+type record TrafficFlowTemplateV_Delete_Existing_TFT_or_No_TFT_Operation
+{
+  BIT4                         numberOfPacketFilters, //'0000'B
+  // numberOfPacketFilters is meaningless here since there is no PacketFilterList
+  BIT1                         eBIT,
+  BIT3                         operationCodeTFT,      // '010'B  or '110'B
+  ParametersList               parametersList   optional
+} with {
+  variant "PRESENCE (operationCodeTFT = '010'B,  // delete existing TFT
+  operationCodeTFT = '110'B   // No TFT Operation
+  )";
+  variant (parametersList) "PRESENCE(eBIT = '1'B)"
+};
+
+
+type record of PacketFilter PacketFilterList_CreateAddReplaceTFT;
+
+
+type record PacketFilter
+{
+  PacketFilterIdentifier       identifier,
+  OCT1                         evaluationPrecedence,
+  LIN1                         lengthIndicator,
+  octetstring                  contents
+} with { variant (lengthIndicator) "LENGTHTO (contents)"};
+
+
+type record of PacketFilterIdentifier  PacketFilterList_DeletePacketFilter;
+
+type record  PacketFilterIdentifier
+{
+  BIT4     identifier,
+  BIT2     direction,
+  BIT2     spare
+};
+
+
+type record of Parameter ParametersList;
+
+
+type record Parameter
+{
+  OCT1               parameterIdentifier,
+  LIN1               lengthIndicator,
+  octetstring        contents
+} with { variant (lengthIndicator) "LENGTHTO (contents)"};
+
+
+type record EPS_BearerLevel_TFT
+{
+  OCT1                         elementIdentifier,   // dec 84, '54'O;   
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare,
+  TrafficFlowTemplateV         trafficFlowTemplateValue
+} with { 
+  variant (lengthIndicator) "LENGTHTO(trafficFlowTemplateValue)"
+  variant "PRESENCE (elementIdentifier = '54'O; )";  
+};
+
+type set of EPS_BearerLevel_TFT EPS_BearerLevel_TFT_List;
+
+//8.20
+type record TrafficAggregateDescription
+{
+  OCT1                         elementIdentifier,     // dec 85, '55'O; 
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare,
+  octetstring                  trafficAggregateDescriptionValue          
+} with { 
+  variant (lengthIndicator) "LENGTHTO(trafficAggregateDescriptionValue)"
+  variant "PRESENCE (elementIdentifier = '55'O; )";  
+};
+
+//8.21
+type set of UserLocationInfo UserLocationInfo_List;
+  
+type record UserLocationInfo
+{
+  OCT1                         elementIdentifier,   // dec 86, '56'O; 
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare,
+  BIT1                         cGI_Flag,
+  BIT1                         sAI_Flag,
+  BIT1                         rAI_Flag,
+  BIT1                         tAI_Flag,
+  BIT1                         eCGI_Flag, 
+  BIT1                         lAI_Flag, 
+  BIT1                         macro_eNodeB_ID_Flag,
+  BIT1                         extendedMacro_eNodeB_ID_Flag,
+  CGI                          cGI optional,
+  SAI                          sAI optional,
+  RAI                          rAI optional,
+  TAI                          tAI optional,
+  ECGI                         eCGI optional,
+  LAI                          lAI optional,
+  Macro_eNodeB_ID              macro_eNodeB_ID optional,
+  ExtendedMacro_eNodeB_ID      extendedMacro_eNodeB_ID optional,
+  octetstring                  additionalOctets  optional 
+} with { 
+  variant (lengthIndicator) "LENGTHTO(cGI_Flag,sAI_Flag,rAI_Flag,tAI_Flag,eCGI_Flag,
+  lAI_Flag,macro_eNodeB_ID_Flag, extendedMacro_eNodeB_ID_Flag,cGI,sAI,rAI,tAI,eCGI,lAI, macro_eNodeB_ID, extendedMacro_eNodeB_ID, additionalOctets)"
+  variant(cGI)       "PRESENCE(cGI_Flag = '1'B)";
+  variant(sAI)       "PRESENCE(sAI_Flag = '1'B)";
+  variant(rAI)       "PRESENCE(rAI_Flag = '1'B)";
+  variant(tAI)       "PRESENCE(tAI_Flag = '1'B)";
+  variant(eCGI)      "PRESENCE(eCGI_Flag = '1'B)";
+  variant(lAI)       "PRESENCE(lAI_Flag = '1'B)";  
+  variant(macro_eNodeB_ID) "PRESENCE(macro_eNodeB_ID_Flag = '1'B)";  
+  variant(extendedMacro_eNodeB_ID) "PRESENCE(extendedMacro_eNodeB_ID_Flag = '1'B)";  
+  variant "PRESENCE (elementIdentifier = '56'O; )"   
+};
+
+//8.21.1
+type record CGI
+{  
+  HEX1                         mccDigit1,
+  HEX1                         mccDigit2,
+  HEX1                         mccDigit3,
+  HEX1                         mncDigit3, 
+  HEX1                         mncDigit1,
+  HEX1                         mncDigit2,
+  OCT2                         lAC,
+  OCT2                         cI
+};
+
+//8.21.2
+type record SAI
+{
+  HEX1                         mccDigit1,
+  HEX1                         mccDigit2,
+  HEX1                         mccDigit3,
+  HEX1                         mncDigit3,
+  HEX1                         mncDigit1, 
+  HEX1                         mncDigit2, 
+  OCT2                         lAC,
+  OCT2                         sAC  
+};
+
+//8.21.3
+type record RAI 
+{
+  HEX1                         mccDigit1,
+  HEX1                         mccDigit2,
+  HEX1                         mccDigit3,
+  HEX1                         mncDigit3,
+  HEX1                         mncDigit1,
+  HEX1                         mncDigit2,
+  OCT2                         lAC,
+  OCT2                         rAC  
+};  
+
+//8.21.4
+type record TAI
+{
+  HEX1                         mccDigit1,
+  HEX1                         mccDigit2,
+  HEX1                         mccDigit3,
+  HEX1                         mncDigit3,
+  HEX1                         mncDigit1, 
+  HEX1                         mncDigit2, 
+  OCT2                         tAC 
+};  
+
+//8.21.5
+type record ECGI
+{
+  HEX1                         mccDigit1,
+  HEX1                         mccDigit2,
+  HEX1                         mccDigit3,
+  HEX1                         mncDigit3,
+  HEX1                         mncDigit1, 
+  HEX1                         mncDigit2,
+  HEX1                         spare,                  
+  integer                      eCI    
+} with { 
+  variant (spare,eCI) "FIELDORDER(msb)";                  
+  variant(eCI) "FIELDLENGTH(28)";
+  variant (eCI) "BYTEORDER(last)";
+};  
+
+//8.21.6
+type record LAI
+{
+  HEX1                         mccDigit1,
+  HEX1                         mccDigit2,
+  HEX1                         mccDigit3,
+  HEX1                         mncDigit3,
+  HEX1                         mncDigit1, 
+  HEX1                         mncDigit2,
+  OCT2                         lAC
+}
+
+//8.21.7
+// Macro_eNodeB_ID
+
+//8.21.8
+type record ExtendedMacro_eNodeB_ID
+{
+  HEX1                         mccDigit1,
+  HEX1                         mccDigit2,
+  HEX1                         mccDigit3,
+  HEX1                         mncDigit3,
+  HEX1                         mncDigit1, 
+  HEX1                         mncDigit2,
+  BIT2                         spare,
+  BIT1                         sMeNB,
+  bitstring                    targetID length(21)
+} with { 
+  variant (spare,sMeNB,targetID) "FIELDORDER(msb)";
+  variant (targetID) "BYTEORDER(last)";
+}
+
+//8.22
+type record FullyQualifiedTEID
+{
+  OCT1                         elementIdentifier,   // dec 87, '57'O; 
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare,
+  integer                      interfaceType, 
+  BIT1                         v6_Flag,
+  BIT1                         v4_Flag,
+  OCT4                         tEID_GRE_Key,
+  OCT4                         iPv4_Address optional,
+  OCT16                        iPv6_Address optional,
+  octetstring                  additionalOctets  optional    
+} with {   
+  variant "PRESENCE (elementIdentifier = '57'O; )" 
+  variant (lengthIndicator) "LENGTHTO(interfaceType,v6_Flag,v4_Flag,tEID_GRE_Key,
+  iPv4_Address,iPv6_Address,additionalOctets)" 
+  variant(interfaceType) "FIELDLENGTH(6)";
+  variant(iPv4_Address)  "PRESENCE(v4_Flag = '1'B)";
+  variant(iPv6_Address)  "PRESENCE(v6_Flag = '1'B)";
+}; 
+
+type set of FullyQualifiedTEID FullyQualifiedTEID_List;
+
+//8.23
+type record TMSI
+{
+  OCT1                         elementIdentifier,  // dec 88, '58'O;  
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare,
+  OCT4                         tMSI_Value 
+} with { 
+  variant (lengthIndicator) "LENGTHTO(tMSI_Value)"; 
+  variant "PRESENCE (elementIdentifier = '58'O; )";
+};
+
+//8.24
+type record GlobalCN_ID
+{
+  OCT1                         elementIdentifier,  // dec 89, '59'O;  
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare,
+  HEX1                         mccDigit1,
+  HEX1                         mccDigit2,
+  HEX1                         mccDigit3,
+  HEX1                         mncDigit3, 
+  HEX1                         mncDigit1,
+  HEX1                         mncDigit2,
+  octetstring                  cN_ID  
+} with { 
+  variant (lengthIndicator) "LENGTHTO(mccDigit1,mccDigit2,mccDigit3,mncDigit3,mncDigit1,mncDigit2,cN_ID)"
+  variant "PRESENCE (elementIdentifier = '59'O; )";  
+};
+
+//8.25
+type record EPS_Bearer_ID
+{
+  integer   ePS_Bearer_ID_Value,
+  BIT4      spare    // '0000'B
+} with {
+  variant(ePS_Bearer_ID_Value) "FIELDLENGTH(4)";}
+
+type set of EPS_Bearer_ID EPS_Bearer_IDs;
+
+type record S103_PDF
+{
+  OCT1                         elementIdentifier,// dec 90, '5A'O; 
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare,
+  integer                      hSGW_AddrForForwardingLength (4,16),
+  octetstring                  hSGW_AddrForForwarding length (4..16),
+  OCT4                         gRE_Key,
+  integer                      ePSBearerID_Number,
+  EPS_Bearer_IDs               ePS_Bearer_IDs  
+} with { 
+  variant (lengthIndicator) "LENGTHTO(hSGW_AddrForForwardingLength,hSGW_AddrForForwarding,gRE_Key,ePSBearerID_Number,ePS_Bearer_IDs)"; 
+  variant "PRESENCE (elementIdentifier = '5A'O; )";  
+  variant (hSGW_AddrForForwardingLength) "LENGTHTO(hSGW_AddrForForwarding)"; 
+  variant (ePSBearerID_Number) "LENGTHTO(ePS_Bearer_IDs)";
+  variant (ePSBearerID_Number) "UNIT (elements)";   
+};
+
+type set of S103_PDF S103_PDF_List
+
+//8.26
+type record S1_UDF
+{
+  OCT1                         elementIdentifier,  // dec 91, '5B'O; 
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare,
+  integer                      ePS_Bearer_ID_Value,
+  BIT4                         spare2,    // '0000'B 
+  integer                      servingGWAddrLength (0,4,16),
+  octetstring                  servingGWAddr length (4..16) optional,    
+  OCT4                         servingGW_S1U_TEID    
+} with { 
+  variant (lengthIndicator) "LENGTHTO(ePS_Bearer_ID_Value,spare2,servingGWAddrLength,servingGWAddr,servingGW_S1U_TEID)";
+  variant "PRESENCE (elementIdentifier = '5B'O; )"; 
+  variant(ePS_Bearer_ID_Value) "FIELDLENGTH(4)";
+  variant (servingGWAddrLength) "LENGTHTO(servingGWAddr)";
+};
+
+type set of S1_UDF S1_UDF_List
+
+//8.27
+type record DelayValue
+{
+  OCT1                         elementIdentifier,   // dec 92 , '5C'O 
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare,
+  integer                      delayValue, //(integer multiples of 50 millisec)
+  octetstring                  additionalOctets  optional 
+} 
+with { 
+  variant (lengthIndicator) "LENGTHTO(delayValue,additionalOctets)"; 
+  variant "PRESENCE (elementIdentifier = '5C'O; )";  
+};
+
+//8.28 - Grouped
+type set BearerContextIEs
+{
+  EPS_BearerID                     ePS_Bearer_ID optional,
+  Cause                            cause optional,
+  EPS_BearerLevel_TFT              ePS_Bearer_TFT optional,  
+  FullyQualifiedTEID_List          fullyQualifiedTEID optional, 
+  Bearer_QoS                       bearerLevel_QoS optional,
+  ChargingID                       chargingID optional,
+  BearerFlags                      bearerFlags optional,
+  TransactionIdentifier            transactionIdentifier optional,
+  ProtocolConfigOptions            protocolConfigOptions optional,
+  RAN_NASCause_List                rAN_NASCause optional,
+  APCO                             additionalProtocolConfigOptions optional,
+  ExtendedProtocolConfigOptions    extendedProtocolConfigOptions optional
+}
+with { 
+  variant(fullyQualifiedTEID) "REPEATABLE(yes)"; 
+  variant(rAN_NASCause) "REPEATABLE(yes)"; 
+};
+
+type record BearerContextGrouped
+{
+  OCT1                         elementIdentifier, // dec 93 , '5D'O
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,  
+  BIT4                         spare,
+  BearerContextIEs             bearerContextIEs
+} with { 
+  variant (lengthIndicator) "LENGTHTO(bearerContextIEs)"; 
+  variant "PRESENCE (elementIdentifier = '5D'O; )"; 
+};
+
+type set of BearerContextGrouped BearerContextGrouped_List;
+
+//8.29
+type record ChargingID
+{
+  OCT1                         elementIdentifier, // dec 94, '5E'O
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare,
+  OCT4                         chargingID_Value,
+  octetstring                  additionalOctets  optional    
+} with { 
+  variant (lengthIndicator) "LENGTHTO(chargingID_Value,additionalOctets)"; 
+  variant "PRESENCE (elementIdentifier = '5E'O; )"; 
+};
+
+//8.30
+type record ChargingCharacteristics
+{
+  OCT1                         elementIdentifier, // dec 95, '5F'O 
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare,
+  OCT2                         chargingCharacteristicsValue,
+  octetstring                  additionalOctets  optional
+} with { 
+  variant (lengthIndicator) "LENGTHTO(chargingCharacteristicsValue,additionalOctets)"; 
+  variant "PRESENCE (elementIdentifier = '5F'O; )"; 
+};
+
+//8.31
+type record TraceInformation
+{
+  OCT1                         elementIdentifier, // dec 96, '60'O
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare,
+  HEX1                         mccDigit1,
+  HEX1                         mccDigit2,
+  HEX1                         mccDigit3,
+  HEX1                         mncDigit3, 
+  HEX1                         mncDigit1,
+  HEX1                         mncDigit2,
+  OCT3                         traceIDValue,
+  OCT9                         triggeringEvents,
+  OCT2                         listOfNE_Types,  
+  OCT1                         sessionTraceDepth, 
+  OCT12                        listOfInterfaces,
+  octetstring                  iPAddressOfTraceCollectionEntity 
+} with { 
+  variant (lengthIndicator) "LENGTHTO(mccDigit1,mccDigit2,mccDigit3,mncDigit3, mncDigit1,mncDigit2,
+  traceIDValue,triggeringEvents,listOfNE_Types,sessionTraceDepth,
+  listOfInterfaces,iPAddressOfTraceCollectionEntity)"; 
+  variant "PRESENCE (elementIdentifier = '60'O; )";        
+};
+
+//8.32
+type record BearerFlags
+{
+  OCT1                         elementIdentifier, // dec 97, '61'O 
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare,
+  BIT1                         pPC,
+  BIT1                         vB,
+  BIT1                          vind,
+  BIT1                          aSI,
+  BIT4                         spare2,
+  octetstring                  additionalOctets  optional
+} with { 
+  variant (lengthIndicator) "LENGTHTO(pPC,vB,spare2,additionalOctets)"; 
+  variant "PRESENCE (elementIdentifier = '61'O; )"; 
+};
+
+//8.33
+//VOID
+
+//8.34
+type record PDN_Type
+{
+  OCT1                         elementIdentifier,   // dec 99, '63'O 
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare,
+  BIT3                         pDN_TypeValue,
+  BIT5                         spare2,
+  octetstring                  additionalOctets  optional
+} with { 
+  variant (lengthIndicator) "LENGTHTO(pDN_TypeValue,spare2,additionalOctets)"; 
+  variant "PRESENCE (elementIdentifier = '63'O; )";  
+};
+
+//8.35
+type record ProcedureTransactionID
+{
+  OCT1                         elementIdentifier,  // dec 100, '64'O 
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare,
+  integer                      pTI_Value,
+  octetstring                  additionalOctets  optional
+} with { 
+  variant (lengthIndicator) "LENGTHTO(pTI_Value,additionalOctets)"; 
+  variant "PRESENCE (elementIdentifier = '64'O; )";      
+};
+
+//8.36 Void
+
+//8.37 Void
+
+//8.38
+type union MM_Context
+{
+  GSM_Key_and_Triplets                         gSM_Key_and_Triplets,
+  UMTS_Key_UsedCipher_and_Quintuplets          uMTS_Key_UsedCipher_and_Quintuplets,
+  GSM_Key_UsedCipher_and_Quintuplets           gSM_Key_UsedCipher_and_Quintuplets,
+  UMTS_key_and_Quintuplets                     uMTS_key_and_Quintuplets,
+  EPS_SecurityContext_and_Quadruplets          ePS_SecurityContext_and_Quadruplets,
+  UMTS_Key_Quadruplets_and_Quintuplets         uMTS_Key_Quadruplets_and_Quintuplets
+}
+
+type set of AuthTriplet AuthTriplets;
+
+type record AuthTriplet
+{
+  OCT16     rAND,
+  OCT4      sRES,
+  OCT8      kc
+};
+
+type set of AuthQuintuplet AuthQuintuplets;
+
+type record AuthQuintuplet { 
+  OCT16                     rand,
+  integer                   xresLength,
+  octetstring               xres,
+  OCT16                     ck,
+  OCT16                     ik,
+  integer                   autnLength,
+  octetstring               autn 
+} with {
+  variant (xresLength) "LENGTHTO(xres)";
+  variant (autnLength) "LENGTHTO(autn)"; 
+};
+
+type set of AuthQuadruplet AuthQuadruplets;
+
+type record AuthQuadruplet
+{
+  OCT16                     rand,
+  integer                   xresLength,
+  octetstring               xres,
+  integer                   autnLength,
+  octetstring               autn,
+  octetstring               k_asme length (32) 
+} with {
+  variant (xresLength) "LENGTHTO(xres)";
+  variant (autnLength) "LENGTHTO(autn)"; 
+};
+
+type record GSM_Key_and_Triplets
+{
+  OCT1                         elementIdentifier,  // dec 103, '67'O
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare,
+  BIT3                         cksn,
+  BIT1                         dRXI,
+  BIT1                         spare2,
+  integer                      securityMode, 
+  BIT1                         sAMBRI,  
+  BIT1                         uAMBRI,
+  BIT3                         spare3,
+  integer                      noofTriplets, 
+  BIT3                         usedCipher,
+  BIT5                         spare4, 
+  OCT8                         kc, 
+  AuthTriplets                 triplets, 
+  OCT2                         drx_par optional,  
+  OCT4                         uplinkSubscribedUE_AMBR optional,
+  OCT4                         downlinkSubscribedUE_AMBR optional,
+  OCT4                         uplinkUsedUE_AMBR optional,
+  OCT4                         downlinkUsedUE_AMBR optional, 
+  integer                      lengthOfUE_NEtworkCapability,
+  octetstring                  uE_NEtworkCapability, 
+  integer                      lengthOfMS_NetworkCapability,
+  octetstring                  mS_NetworkCapability, 
+  integer                      lengthOfMobileEquipmentIdentity,
+  octetstring                  mobileEquipmentIdentity,
+  BIT1                         uNA,
+  BIT1                         gENA,
+  BIT1                         gANA,
+  BIT1                         iNA,
+  BIT1                         eNA,
+  BIT1                         hNNA,
+  BIT1                         nBNA,
+  BIT1                         eCNA,  
+  integer                      lengthOfVoiceDomainPreferenceAndUEsUsageSetting optional, //"extendable" optional for backward compatibility
+  octetstring                  voiceDomainPreferenceAndUEsUsageSetting optional,         //"extendable" optional for backward compatibility
+  octetstring                  additionalOctets  optional                                //"extendable" optional for backward compatibility
+} with { 
+  variant (lengthIndicator) "LENGTHTO(cksn,dRXI,spare2,securityMode,sAMBRI,uAMBRI,spare3,noofTriplets,usedCipher,spare4, 
+  kc,triplets,drx_par,uplinkSubscribedUE_AMBR,downlinkSubscribedUE_AMBR,
+  uplinkUsedUE_AMBR,downlinkUsedUE_AMBR,lengthOfUE_NEtworkCapability,
+  uE_NEtworkCapability,lengthOfMS_NetworkCapability,mS_NetworkCapability,
+  lengthOfMobileEquipmentIdentity,mobileEquipmentIdentity,
+  uNA,gENA,gANA,iNA,eNA,hNNA,nBNA,eCNA,
+  lengthOfVoiceDomainPreferenceAndUEsUsageSetting,
+  voiceDomainPreferenceAndUEsUsageSetting,
+  additionalOctets)"; 
+  variant "PRESENCE (elementIdentifier = '67'O; )";   
+  variant (securityMode) "FIELDLENGTH(3)";  
+  variant (noofTriplets) "FIELDLENGTH(3)"; 
+  variant (noofTriplets) "LENGTHTO(triplets)";
+  variant (noofTriplets) "UNIT(elements)";  
+  variant (drx_par) "PRESENCE (dRXI = '1'B; )";  
+  variant (lengthOfUE_NEtworkCapability) "LENGTHTO(uE_NEtworkCapability)";  
+  variant (lengthOfMS_NetworkCapability) "LENGTHTO(mS_NetworkCapability)";  
+  variant (lengthOfMobileEquipmentIdentity) "LENGTHTO(mobileEquipmentIdentity)"; 
+  variant (lengthOfVoiceDomainPreferenceAndUEsUsageSetting) "LENGTHTO(voiceDomainPreferenceAndUEsUsageSetting)";  
+  variant (uplinkSubscribedUE_AMBR) "PRESENCE (sAMBRI = '1'B; )";  
+  variant (downlinkSubscribedUE_AMBR) "PRESENCE (sAMBRI = '1'B; )";    
+  variant (uplinkUsedUE_AMBR) "PRESENCE (uAMBRI = '1'B; )";  
+  variant (downlinkUsedUE_AMBR) "PRESENCE (uAMBRI = '1'B; )";           
+};
+
+type record UMTS_Key_UsedCipher_and_Quintuplets
+{
+  OCT1                         elementIdentifier,  // dec 104, '68'O
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare,
+  BIT3                         cksn_ksi,
+  BIT1                         dRXI,
+  BIT1                         spare2,
+  integer                      securityMode, 
+  BIT1                         sAMBRI,
+  BIT1                         uAMBRI,
+  BIT1                         uGIPAI,
+  BIT1                         gUPII,
+  BIT1                         iOVI,  
+  integer                      noofQuintuplets, 
+  BIT3                         usedCipher,
+  BIT3                         usedGPRSIntegrityProtectionAlgorithm,
+  BIT2                         spare3,  
+  OCT16                        ck,
+  OCT16                        ik, 
+  AuthQuintuplets              quintuplets, 
+  OCT2                         drx_par optional,    
+  OCT4                         uplinkSubscribedUE_AMBR optional,
+  OCT4                         downlinkSubscribedUE_AMBR optional,
+  OCT4                         uplinkUsedUE_AMBR optional,
+  OCT4                         downlinkUsedUE_AMBR optional, 
+  integer                      lengthOfUE_NEtworkCapability,
+  octetstring                  uE_NEtworkCapability, 
+  integer                      lengthOfMS_NetworkCapability,
+  octetstring                  mS_NetworkCapability, 
+  integer                      lengthOfMobileEquipmentIdentity,
+  octetstring                  mobileEquipmentIdentity,
+  BIT1                         uNA,
+  BIT1                         gENA,
+  BIT1                         gANA,
+  BIT1                         iNA,
+  BIT1                         eNA,
+  BIT1                         hNNA,
+  BIT1                         nBNA,
+  BIT1                         eCNA,  
+  integer                      lengthOfVoiceDomainPreferenceAndUEsUsageSetting optional, //"extendable" optional for backward compatibility
+  octetstring                  voiceDomainPreferenceAndUEsUsageSetting optional,         //"extendable" optional for backward compatibility
+  integer                      lengthOfHigherBitratesThan16Mbpsflags optional,           //"extendable" optional for backward compatibility
+  octetstring                  higherBitratesThan16Mbpsflags optional,                   //"extendable" optional for backward compatibility
+  LIN1                         iOV_UpdatesCounter optional,                   //"extendable" optional for backward compatibility
+  octetstring                  additionalOctets  optional                                //"extendable" optional for backward compatibility
+} with { 
+  variant (lengthIndicator) "LENGTHTO(cksn_ksi,dRXI,spare2,securityMode,sAMBRI,uAMBRI,uGIPAI,gUPII,iOVI,noofQuintuplets, 
+  usedCipher,usedGPRSIntegrityProtectionAlgorithm,spare3,ck,ik,quintuplets,drx_par,uplinkSubscribedUE_AMBR,
+  downlinkSubscribedUE_AMBR,uplinkUsedUE_AMBR,downlinkUsedUE_AMBR, 
+  lengthOfUE_NEtworkCapability,uE_NEtworkCapability,lengthOfMS_NetworkCapability,
+  mS_NetworkCapability,lengthOfMobileEquipmentIdentity,mobileEquipmentIdentity,
+  uNA,gENA,gANA,iNA,eNA,hNNA,nBNA,eCNA,
+  lengthOfVoiceDomainPreferenceAndUEsUsageSetting,
+  voiceDomainPreferenceAndUEsUsageSetting,
+  lengthOfHigherBitratesThan16Mbpsflags,
+  higherBitratesThan16Mbpsflags,iOV_UpdatesCounter,
+  additionalOctets)"; 
+  variant "PRESENCE (elementIdentifier = '68'O; )";   
+  variant (securityMode) "FIELDLENGTH(3)";  
+  variant (noofQuintuplets) "FIELDLENGTH(3)";
+  variant (noofQuintuplets) "LENGTHTO(quintuplets)";
+  variant (noofQuintuplets) "UNIT(elements)"; 
+  variant (drx_par) "PRESENCE (dRXI = '1'B; )";  
+  variant (lengthOfUE_NEtworkCapability) "LENGTHTO(uE_NEtworkCapability)";  
+  variant (lengthOfMS_NetworkCapability) "LENGTHTO(mS_NetworkCapability)";  
+  variant (lengthOfMobileEquipmentIdentity) "LENGTHTO(mobileEquipmentIdentity)"; 
+  variant (lengthOfVoiceDomainPreferenceAndUEsUsageSetting) "LENGTHTO(voiceDomainPreferenceAndUEsUsageSetting)";  
+  variant (lengthOfHigherBitratesThan16Mbpsflags) "LENGTHTO(higherBitratesThan16Mbpsflags)";  
+  variant (uplinkSubscribedUE_AMBR) "PRESENCE (sAMBRI = '1'B; )";  
+  variant (downlinkSubscribedUE_AMBR) "PRESENCE (sAMBRI = '1'B; )";    
+  variant (uplinkUsedUE_AMBR) "PRESENCE (uAMBRI = '1'B; )";  
+  variant (downlinkUsedUE_AMBR) "PRESENCE (uAMBRI = '1'B; )";       
+  variant (iOV_UpdatesCounter) "PRESENCE (iOVI = '1'B; )";       
+};
+
+type record GSM_Key_UsedCipher_and_Quintuplets
+{
+  OCT1                         elementIdentifier,  // dec 105, '69'O 
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare,
+  BIT3                         cksn_ksi,
+  BIT1                         dRXI,
+  BIT1                         spare2,
+  integer                      securityMode, 
+  BIT1                         sAMBRI,
+  BIT1                         uAMBRI,
+  BIT3                         spare3,  
+  integer                      noofQuintuplets,  
+  BIT3                         usedCipher,
+  BIT5                         spare4,  
+  OCT8                         kc, 
+  AuthQuintuplets              quintuplets, 
+  OCT2                         drx_par optional,     
+  OCT4                         uplinkSubscribedUE_AMBR optional,
+  OCT4                         downlinkSubscribedUE_AMBR optional,
+  OCT4                         uplinkUsedUE_AMBR optional,
+  OCT4                         downlinkUsedUE_AMBR optional, 
+  integer                      lengthOfUE_NEtworkCapability,
+  octetstring                  uE_NEtworkCapability, 
+  integer                      lengthOfMS_NetworkCapability,
+  octetstring                  mS_NetworkCapability, 
+  integer                      lengthOfMobileEquipmentIdentity,
+  octetstring                  mobileEquipmentIdentity,
+  BIT1                         uNA,
+  BIT1                         gENA,
+  BIT1                         gANA,
+  BIT1                         iNA,
+  BIT1                         eNA,
+  BIT1                         hNNA,
+  BIT1                         nBNA,
+  BIT1                         eCNA,  
+  integer                      lengthOfVoiceDomainPreferenceAndUEsUsageSetting optional, //"extendable" optional for backward compatibility
+  octetstring                  voiceDomainPreferenceAndUEsUsageSetting optional,         //"extendable" optional for backward compatibility
+  integer                      lengthOfHigherBitratesThan16Mbpsflags optional,           //"extendable" optional for backward compatibility
+  octetstring                  higherBitratesThan16Mbpsflags optional,                   //"extendable" optional for backward compatibility
+  octetstring                  additionalOctets  optional                                //"extendable" optional for backward compatibility
+} with { 
+  variant (lengthIndicator) "LENGTHTO(cksn_ksi,dRXI,spare2,securityMode,sAMBRI,uAMBRI,spare3,  
+  noofQuintuplets,usedCipher,spare4,kc,quintuplets, 
+  drx_par,uplinkSubscribedUE_AMBR,downlinkSubscribedUE_AMBR,
+  uplinkUsedUE_AMBR,downlinkUsedUE_AMBR,lengthOfUE_NEtworkCapability,
+  uE_NEtworkCapability,lengthOfMS_NetworkCapability,mS_NetworkCapability, 
+  lengthOfMobileEquipmentIdentity,mobileEquipmentIdentity, 
+  uNA,gENA,gANA,iNA,eNA,hNNA,nBNA,eCNA,
+  lengthOfVoiceDomainPreferenceAndUEsUsageSetting,
+  voiceDomainPreferenceAndUEsUsageSetting,
+  lengthOfHigherBitratesThan16Mbpsflags,
+  higherBitratesThan16Mbpsflags,
+  additionalOctets)"; 
+  variant "PRESENCE (elementIdentifier = '69'O; )";   
+  variant (securityMode) "FIELDLENGTH(3)";  
+  variant (noofQuintuplets) "FIELDLENGTH(3)";
+  variant (noofQuintuplets) "LENGTHTO(quintuplets)";
+  variant (noofQuintuplets) "UNIT(elements)";
+  variant (drx_par) "PRESENCE (dRXI = '1'B; )";  
+  variant (lengthOfUE_NEtworkCapability) "LENGTHTO(uE_NEtworkCapability)";  
+  variant (lengthOfMS_NetworkCapability) "LENGTHTO(mS_NetworkCapability)";  
+  variant (lengthOfMobileEquipmentIdentity) "LENGTHTO(mobileEquipmentIdentity)"; 
+  variant (lengthOfVoiceDomainPreferenceAndUEsUsageSetting) "LENGTHTO(voiceDomainPreferenceAndUEsUsageSetting)";  
+  variant (lengthOfHigherBitratesThan16Mbpsflags) "LENGTHTO(higherBitratesThan16Mbpsflags)";  
+  variant (uplinkSubscribedUE_AMBR) "PRESENCE (sAMBRI = '1'B; )";  
+  variant (downlinkSubscribedUE_AMBR) "PRESENCE (sAMBRI = '1'B; )";    
+  variant (uplinkUsedUE_AMBR) "PRESENCE (uAMBRI = '1'B; )";  
+  variant (downlinkUsedUE_AMBR) "PRESENCE (uAMBRI = '1'B; )";         
+};
+
+type record UMTS_key_and_Quintuplets
+{
+  OCT1                         elementIdentifier,  // dec 106, '6A'O 
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare, 
+  BIT3                         ksi,
+  BIT1                         dRXI,
+  BIT1                         spare2,
+  integer                      securityMode, 
+  BIT1                         sAMBRI,
+  BIT1                         uAMBRI,   
+  BIT1                         uGIPAI,   
+  BIT1                         gUPII,   
+  BIT1                         iOVI,  
+  integer                      noofQuintuplets, 
+  BIT3                         usedGPRSIntegrityProtectionAlgorithm, 
+  BIT5                         spare4, 
+  OCT16                        ck,
+  OCT16                        ik,
+  AuthQuintuplets              quintuplets,     
+  OCT2                         drx_par optional,     
+  OCT4                         uplinkSubscribedUE_AMBR optional,
+  OCT4                         downlinkSubscribedUE_AMBR optional,
+  OCT4                         uplinkUsedUE_AMBR optional,
+  OCT4                         downlinkUsedUE_AMBR optional, 
+  integer                      lengthOfUE_NEtworkCapability,
+  octetstring                  uE_NEtworkCapability, 
+  integer                      lengthOfMS_NetworkCapability,
+  octetstring                  mS_NetworkCapability, 
+  integer                      lengthOfMobileEquipmentIdentity,
+  octetstring                  mobileEquipmentIdentity,
+  BIT1                         uNA,
+  BIT1                         gENA,
+  BIT1                         gANA,
+  BIT1                         iNA,
+  BIT1                         eNA,
+  BIT1                         hNNA,
+  BIT1                         nBNA,
+  BIT1                         eCNA,  
+  integer                      lengthOfVoiceDomainPreferenceAndUEsUsageSetting optional, //"extendable" optional for backward compatibility
+  octetstring                  voiceDomainPreferenceAndUEsUsageSetting optional,         //"extendable" optional for backward compatibility
+  integer                      lengthOfHigherBitratesThan16Mbpsflags optional,           //"extendable" optional for backward compatibility
+  octetstring                  higherBitratesThan16Mbpsflags optional,                   //"extendable" optional for backward compatibility
+  LIN1                         iOV_UpdatesCounter optional,
+  integer                      lengthOfExtendedAccessRestrictionData optional,
+  BIT1                         nRSRNA  optional,
+  BIT7                         spare5 optional,
+  octetstring                  additionalOctets  optional                                //"extendable" optional for backward compatibility
+}  with { 
+  variant (lengthIndicator) "LENGTHTO(ksi,dRXI,spare2,securityMode,sAMBRI,uAMBRI,uGIPAI,gUPII,iOVI,  
+  noofQuintuplets,usedGPRSIntegrityProtectionAlgorithm,spare4,ck,ik,quintuplets,     
+  drx_par,uplinkSubscribedUE_AMBR,downlinkSubscribedUE_AMBR,
+  uplinkUsedUE_AMBR,downlinkUsedUE_AMBR,lengthOfUE_NEtworkCapability,
+  uE_NEtworkCapability,lengthOfMS_NetworkCapability,mS_NetworkCapability, 
+  lengthOfMobileEquipmentIdentity,mobileEquipmentIdentity,
+  uNA,gENA,gANA,iNA,eNA,hNNA,nBNA,eCNA,
+  lengthOfVoiceDomainPreferenceAndUEsUsageSetting,
+  voiceDomainPreferenceAndUEsUsageSetting,
+  lengthOfHigherBitratesThan16Mbpsflags,
+  higherBitratesThan16Mbpsflags,iOV_UpdatesCounter,
+  lengthOfExtendedAccessRestrictionData,nRSRNA,spare5,
+  additionalOctets)"; 
+  variant "PRESENCE (elementIdentifier = '6A'O; )";   
+  variant (securityMode) "FIELDLENGTH(3)";  
+  variant (noofQuintuplets) "FIELDLENGTH(3)";
+  variant (noofQuintuplets) "LENGTHTO(quintuplets)";
+  variant (noofQuintuplets) "UNIT(elements)"; 
+  variant (drx_par) "PRESENCE (dRXI = '1'B; )";  
+  variant (lengthOfUE_NEtworkCapability) "LENGTHTO(uE_NEtworkCapability)";  
+  variant (lengthOfMS_NetworkCapability) "LENGTHTO(mS_NetworkCapability)";  
+  variant (lengthOfMobileEquipmentIdentity) "LENGTHTO(mobileEquipmentIdentity)";
+  variant (lengthOfVoiceDomainPreferenceAndUEsUsageSetting) "LENGTHTO(voiceDomainPreferenceAndUEsUsageSetting)";  
+  variant (lengthOfHigherBitratesThan16Mbpsflags) "LENGTHTO(higherBitratesThan16Mbpsflags)";  
+  variant (lengthOfExtendedAccessRestrictionData) "LENGTHTO(nRSRNA,spare5)";  
+  variant (uplinkSubscribedUE_AMBR) "PRESENCE (sAMBRI = '1'B; )";  
+  variant (downlinkSubscribedUE_AMBR) "PRESENCE (sAMBRI = '1'B; )";    
+  variant (uplinkUsedUE_AMBR) "PRESENCE (uAMBRI = '1'B; )";  
+  variant (downlinkUsedUE_AMBR) "PRESENCE (uAMBRI = '1'B; )";             
+  variant (iOV_UpdatesCounter) "PRESENCE (iOVI = '1'B; )";  
+};
+
+
+type record OldEPS_SecurityContext
+{
+  BIT3                         oldNCC,
+  BIT3                         oldKSI,
+  BIT1                         spare,
+  BIT1                         nHI_old,
+  octetstring                  old_K_asme length (32), 
+  octetstring                  old_NH length (32) optional 
+} with { 
+  variant (old_NH)  "PRESENCE(nHI_old = '1'B )"; 
+};
+
+type record EPS_SecurityContext_and_Quadruplets
+{
+  OCT1                         elementIdentifier,  // dec 107, '6B'O  
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare, 
+  BIT3                         ksi_asme,
+  BIT1                         dRXI,
+  BIT1                         nHI,
+  integer                      securityMode,  
+  BIT1                         osci,
+  BIT1                         uAMBRI,      
+  integer                      noofQuadruplets, 
+  integer                      noofQuintuplets, 
+  BIT4                         usedNAS_Cipher,
+  BIT3                         usedNAS_IntegrityAlgorithm,
+  BIT1                         sAMBRI,
+  integer                      nAS_DownlinkCount,
+  integer                      nAS_UplinkCount,
+  octetstring                  k_asme length (32), 
+  AuthQuadruplets              quadruplets,   
+  AuthQuintuplets              quintuplets,
+  OCT2                         drx_par optional, 
+  octetstring                  nH length (32) optional, 
+  BIT3                         nCC optional, 
+  BIT5                         spare4 optional,   
+  OCT4                         uplinkSubscribedUE_AMBR optional,
+  OCT4                         downlinkSubscribedUE_AMBR optional,
+  OCT4                         uplinkUsedUE_AMBR optional,
+  OCT4                         downlinkUsedUE_AMBR optional, 
+  integer                      lengthOfUE_NEtworkCapability,
+  octetstring                  uE_NEtworkCapability, 
+  integer                      lengthOfMS_NetworkCapability,
+  octetstring                  mS_NetworkCapability, 
+  integer                      lengthOfMobileEquipmentIdentity,
+  octetstring                  mobileEquipmentIdentity, 
+  BIT1                         uNA,
+  BIT1                         gENA,
+  BIT1                         gANA,
+  BIT1                         iNA,
+  BIT1                         eNA,
+  BIT1                         hNNA,
+  BIT1                         nBNA,
+  BIT1                         eCNA, 
+  OldEPS_SecurityContext       oldEPS_SecurityContext optional,               
+  integer                      lengthOfVoiceDomainPreferenceAndUEsUsageSetting optional, //"extendable" optional for backward compatibility
+  octetstring                  voiceDomainPreferenceAndUEsUsageSetting optional,         //"extendable" optional for backward compatibility
+  LIN2_BO_LAST                 lengthOfUERadioCapabilityforPagingInformation optional,   //"extendable" optional for backward compatibility
+  octetstring                  uERadioCapabilityforPagingInformation optional,           //"extendable" optional for backward compatibility
+  integer                      lengthOfExtendedAccessRestrictionData optional, //"extendable" optional for backward compatibility
+  BIT1                         nRSRNA optional,
+  BIT1                         uSSRNA optional,
+  BIT6                         spare5 optional,
+  integer                      lengthOfUEAdditionalSecurityCapability optional, //"extendable" optional for backward compatibility
+  octetstring                  uEAdditionalSecurityCapability optional,         //"extendable" optional for backward compatibility
+  octetstring                  additionalOctets  optional                                //"extendable" optional for backward compatibility   
+}  with { 
+  variant (lengthIndicator) "LENGTHTO(ksi_asme,dRXI,nHI,securityMode,osci,uAMBRI,noofQuadruplets, 
+  noofQuintuplets,usedNAS_Cipher,usedNAS_IntegrityAlgorithm,sAMBRI,
+  nAS_DownlinkCount,nAS_UplinkCount,k_asme, 
+  quadruplets,quintuplets,drx_par,nH,nCC,spare4, 
+  uplinkSubscribedUE_AMBR,downlinkSubscribedUE_AMBR,
+  uplinkUsedUE_AMBR,downlinkUsedUE_AMBR,lengthOfUE_NEtworkCapability,
+  uE_NEtworkCapability,lengthOfMS_NetworkCapability,mS_NetworkCapability, 
+  lengthOfMobileEquipmentIdentity,mobileEquipmentIdentity,
+  uNA,gENA,gANA,iNA,eNA,hNNA,nBNA,eCNA,
+  oldEPS_SecurityContext, 
+  lengthOfVoiceDomainPreferenceAndUEsUsageSetting,
+  voiceDomainPreferenceAndUEsUsageSetting,
+  lengthOfUERadioCapabilityforPagingInformation,
+  uERadioCapabilityforPagingInformation,
+  lengthOfExtendedAccessRestrictionData,nRSRNA, uSSRNA,spare5,
+  lengthOfUEAdditionalSecurityCapability,uEAdditionalSecurityCapability,
+  additionalOctets)"; 
+  variant "PRESENCE (elementIdentifier = '6B'O; )";   
+  variant (securityMode) "FIELDLENGTH(3)";  
+  variant (noofQuadruplets) "FIELDLENGTH(3)";
+  variant (noofQuadruplets) "LENGTHTO(quadruplets)";
+  variant (noofQuadruplets) "UNIT(elements)";      
+  variant (noofQuintuplets) "FIELDLENGTH(3)";
+  variant (noofQuintuplets) "LENGTHTO(quintuplets)";
+  variant (noofQuintuplets) "UNIT(elements)";      
+  variant (nAS_DownlinkCount)  "FIELDLENGTH(24)";
+  variant (nAS_DownlinkCount) "BYTEORDER(last)";     
+  variant (nAS_UplinkCount) "FIELDLENGTH(24)"; 
+  variant (nAS_UplinkCount) "BYTEORDER(last)";       
+  variant (lengthOfUE_NEtworkCapability) "LENGTHTO(uE_NEtworkCapability)";  
+  variant (lengthOfMS_NetworkCapability) "LENGTHTO(mS_NetworkCapability)";  
+  variant (lengthOfMobileEquipmentIdentity) "LENGTHTO(mobileEquipmentIdentity)";
+  variant (lengthOfVoiceDomainPreferenceAndUEsUsageSetting) "LENGTHTO(voiceDomainPreferenceAndUEsUsageSetting)";  
+  variant (lengthOfUERadioCapabilityforPagingInformation) "LENGTHTO(uERadioCapabilityforPagingInformation)";  
+  variant (lengthOfExtendedAccessRestrictionData) "LENGTHTO(nRSRNA,uSSRNA,spare5)";  
+  variant (lengthOfUEAdditionalSecurityCapability) "LENGTHTO(uEAdditionalSecurityCapability)";  
+  variant (drx_par) "PRESENCE(dRXI = '1'B)";
+  variant (nH)      "PRESENCE(nHI = '1'B)";
+  variant (nCC)     "PRESENCE(nHI = '1'B)";
+  variant (spare4)  "PRESENCE(nHI = '1'B)";   
+  variant (uplinkSubscribedUE_AMBR) "PRESENCE (sAMBRI = '1'B; )";  
+  variant (downlinkSubscribedUE_AMBR) "PRESENCE (sAMBRI = '1'B; )";    
+  variant (uplinkUsedUE_AMBR) "PRESENCE (uAMBRI = '1'B; )";  
+  variant (downlinkUsedUE_AMBR) "PRESENCE (uAMBRI = '1'B; )";      
+  variant (oldEPS_SecurityContext)  "PRESENCE(osci = '1'B )";                   
+}; 
+
+type record UMTS_Key_Quadruplets_and_Quintuplets
+{
+  OCT1                         elementIdentifier,   // dec 108, '6C'O  
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare, 
+  BIT3                         ksi_asme,
+  BIT1                         dRXI,
+  BIT1                         spare2,
+  integer                      securityMode, 
+  BIT1                         sAMBRI,
+  BIT1                         uAMBRI,
+  integer                      noofQuadruplets, 
+  integer                      noofQuintuplets,
+  OCT1                         spare4, 
+  OCT16                        ck,
+  OCT16                        ik,
+  AuthQuadruplets              quadruplets,   
+  AuthQuintuplets              quintuplets,  
+  OCT2                         drx_par optional,  
+  OCT4                         uplinkSubscribedUE_AMBR optional,
+  OCT4                         downlinkSubscribedUE_AMBR optional,
+  OCT4                         uplinkUsedUE_AMBR optional,
+  OCT4                         downlinkUsedUE_AMBR optional, 
+  integer                      lengthOfUE_NEtworkCapability,
+  octetstring                  uE_NEtworkCapability, 
+  integer                      lengthOfMS_NetworkCapability,
+  octetstring                  mS_NetworkCapability, 
+  integer                      lengthOfMobileEquipmentIdentity,
+  octetstring                  mobileEquipmentIdentity, 
+  BIT1                         uNA,
+  BIT1                         gENA,
+  BIT1                         gANA,
+  BIT1                         iNA,
+  BIT1                         eNA,
+  BIT1                         hNNA,
+  BIT1                         nBNA,
+  BIT1                         eCNA,  
+  integer                      lengthOfVoiceDomainPreferenceAndUEsUsageSetting optional,  //"extendable" optional for backward compatibility
+  octetstring                  voiceDomainPreferenceAndUEsUsageSetting optional,          //"extendable" optional for backward compatibility
+  octetstring                  additionalOctets  optional                                 //"extendable" optional for backward compatibility 
+}  with { 
+  variant (lengthIndicator) "LENGTHTO(ksi_asme,dRXI,spare2,securityMode,sAMBRI,uAMBRI, 
+  noofQuadruplets,noofQuintuplets,spare4,ck,
+  ik,quadruplets,quintuplets,drx_par,uplinkSubscribedUE_AMBR,
+  downlinkSubscribedUE_AMBR,uplinkUsedUE_AMBR,downlinkUsedUE_AMBR, 
+  lengthOfUE_NEtworkCapability,uE_NEtworkCapability, 
+  lengthOfMS_NetworkCapability,mS_NetworkCapability, 
+  lengthOfMobileEquipmentIdentity,mobileEquipmentIdentity,
+  uNA,gENA,gANA,iNA,eNA,hNNA,nBNA,eCNA,
+  lengthOfVoiceDomainPreferenceAndUEsUsageSetting,
+  voiceDomainPreferenceAndUEsUsageSetting,
+  additionalOctets)"; 
+  variant "PRESENCE (elementIdentifier = '6C'O; )";   
+  variant (securityMode) "FIELDLENGTH(3)";  
+  variant (noofQuadruplets) "FIELDLENGTH(3)";
+  variant (noofQuadruplets) "LENGTHTO(quadruplets)";
+  variant (noofQuadruplets) "UNIT(elements)";      
+  variant (noofQuintuplets) "FIELDLENGTH(3)";
+  variant (noofQuintuplets) "LENGTHTO(quintuplets)";
+  variant (noofQuintuplets) "UNIT(elements)";
+  variant (drx_par) "PRESENCE (dRXI = '1'B; )";
+  variant (lengthOfUE_NEtworkCapability) "LENGTHTO(uE_NEtworkCapability)";  
+  variant (lengthOfMS_NetworkCapability) "LENGTHTO(mS_NetworkCapability)";  
+  variant (lengthOfMobileEquipmentIdentity) "LENGTHTO(mobileEquipmentIdentity)";
+  variant (lengthOfVoiceDomainPreferenceAndUEsUsageSetting) "LENGTHTO(voiceDomainPreferenceAndUEsUsageSetting)";  
+  variant (uplinkSubscribedUE_AMBR) "PRESENCE (sAMBRI = '1'B; )";  
+  variant (downlinkSubscribedUE_AMBR) "PRESENCE (sAMBRI = '1'B; )";    
+  variant (uplinkUsedUE_AMBR) "PRESENCE (uAMBRI = '1'B; )";  
+  variant (downlinkUsedUE_AMBR) "PRESENCE (uAMBRI = '1'B; )"; 
+};   
+
+//8.39
+type set PDN_Conn_BearerContext_IEs
+{
+  EPS_BearerID                ePS_BearerID optional,
+  EPS_BearerLevel_TFT         ePS_Bearer_TFT optional, 
+  FullyQualifiedTEID_List     fullyQualifiedTEID optional, 
+  Bearer_QoS                  bearerLevel_QoS optional,
+  FullyQualifiedContainer     container optional, 
+  TransactionIdentifier       transactionIdentifier optional,
+  BearerFlags                 bearerFlags optional 
+}with {         
+  variant(fullyQualifiedTEID) "REPEATABLE(yes)";
+};         
+
+type record PDN_Conn_BearerContext
+{
+  OCT1                         elementIdentifier,// dec 93, '5D'O  
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare,  
+  PDN_Conn_BearerContext_IEs   bearerContext_IEs
+} with { 
+  variant (lengthIndicator) "LENGTHTO(bearerContext_IEs)"; 
+  variant "PRESENCE (elementIdentifier = '5D'O; )";      
+};
+
+type set of PDN_Conn_BearerContext PDN_Conn_BearerContext_List
+
+type set PDN_Connection_IEs
+{
+  AccessPointName             accessPointName optional,
+  IP_Address_List             iP_Address optional,
+  EPS_BearerID                linkedEPS_Bearer_ID optional,
+  FullyQualifiedTEID          fullyQualifiedTEID optional,  
+  FullyQualifiedDomainName_List fullyQualifiedDomainName optional,
+  PDN_Conn_BearerContext_List bearerContexts optional, 
+  AggregateMaximumBitRate     apn_ambr optional,
+  ChargingCharacteristics     chargingCharacteristics optional,
+  APN_Restriction             aPN_Restriction optional,
+  SelectionMode               selectionMode optional,
+  ChangeReportingAction       changeReportingAction optional,
+  CSG_InformationReportingAction cSG_InformationReportingAction optional,
+  HeNBInformationReporting    heNBInformationReporting optional,
+  Indication                  indicationFlags optional,
+  SignallingPriorityIndication signallingPriorityIndication optional,
+  ChangeToReportFlags	        changeToReportFlags optional,
+  PresenceReportingAreaAction_List presenceReportingAreaAction optional,
+  WLANOffloadabilityIndication wLANOffloadabilityIndication optional,
+  RemoteUEContextGrouped_List  remoteUEContext optional,
+  PDN_Type                     pDN_Type optional,
+  HeaderCompressionConfiguration headerCompressionConfiguration optional
+} with { 
+  variant(iP_Address) "REPEATABLE(yes)";
+  variant(fullyQualifiedDomainName) "REPEATABLE(yes)";
+  variant(bearerContexts) "REPEATABLE(yes)";  
+  variant(presenceReportingAreaAction) "REPEATABLE(yes)";
+  variant(remoteUEContext) "REPEATABLE(yes)";
+};    
+
+type record PDN_ConnectionGrouped
+{
+  OCT1                         elementIdentifier,  // dec 109, '6D'O   
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare,  
+  PDN_Connection_IEs           pDN_Connection_IEs
+} with { 
+  variant (lengthIndicator) "LENGTHTO(pDN_Connection_IEs)";
+  variant "PRESENCE (elementIdentifier = '6D'O; )";      
+};         
+
+type set of PDN_ConnectionGrouped PDN_ConnectionGrouped_List    
+
+//8.40
+type record PDU_Numbers
+{
+  OCT1                         elementIdentifier,  // dec 110, '6E'O  
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare,  
+  BIT4                         nSAPI,
+  BIT4                         spare2,
+  integer                      dL_GTPU_SeqNumber, 
+  integer                      uL_GTPU_SeqNumber,
+  integer                      send_NPDU_Number,
+  integer                      receive_NPDU_Number, 
+  octetstring                  additionalOctets  optional
+} with { 
+  variant (lengthIndicator) "LENGTHTO(nSAPI,spare2,dL_GTPU_SeqNumber, 
+  uL_GTPU_SeqNumber,send_NPDU_Number,
+  receive_NPDU_Number,additionalOctets)"; 
+  variant "PRESENCE (elementIdentifier = '6E'O;)"; 
+  variant (dL_GTPU_SeqNumber) "FIELDLENGTH(16)";
+  variant (dL_GTPU_SeqNumber) "BYTEORDER(last)";  
+  variant (uL_GTPU_SeqNumber) "FIELDLENGTH(16)"; 
+  variant (uL_GTPU_SeqNumber) "BYTEORDER(last)";
+  variant (send_NPDU_Number) "FIELDLENGTH(16)";
+  variant (send_NPDU_Number) "BYTEORDER(last)";   
+  variant (receive_NPDU_Number) "FIELDLENGTH(16)"; 
+  variant (receive_NPDU_Number) "BYTEORDER(last)";         
+};
+
+//8.41
+type record Packet_TMSI
+{
+  OCT1                         elementIdentifier, // dec 111, '6F'O   
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare,  
+  OCT4                         pTMSI_Value
+} with { 
+  variant (lengthIndicator) "LENGTHTO(pTMSI_Value)"; 
+  variant "PRESENCE (elementIdentifier = '6F'O; )";      
+};
+
+
+//8.42
+type record P_TMSI_Signature
+{
+  OCT1                         elementIdentifier, // dec 112, '70'O 
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare,  
+  OCT3                         p_TMSI_SignatureValue     
+} with { 
+  variant (lengthIndicator) "LENGTHTO(p_TMSI_SignatureValue)"; 
+  variant "PRESENCE (elementIdentifier = '70'O; )";      
+};
+
+//8.43
+type record Hop_Counter
+{
+  OCT1                         elementIdentifier,  //dec 113, '71'O  
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare,   
+  integer                      hopCounterValue,
+  octetstring                  additionalOctets  optional
+} with { 
+  variant (lengthIndicator) "LENGTHTO(hopCounterValue,additionalOctets)"; 
+  variant "PRESENCE (elementIdentifier = '71'O; )";      
+}; 
+
+//8.44
+type record UE_TimeZone
+{
+  OCT1                         elementIdentifier,  //dec 114, '72'O  
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare,   
+  OCT1                         timeZone,
+  BIT2                         daylightSavingTime,
+  BIT6                         spare2,
+  octetstring                  additionalOctets  optional 
+} with { 
+  variant (lengthIndicator) "LENGTHTO(timeZone,daylightSavingTime,spare2,additionalOctets)"; 
+  variant "PRESENCE (elementIdentifier = '72'O; )";      
+}; 
+
+//8.45
+type record TraceReference
+{
+  OCT1                         elementIdentifier,  //dec 115, '73'O  
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare,   
+  HEX1                         mccDigit1,
+  HEX1                         mccDigit2,
+  HEX1                         mccDigit3,
+  HEX1                         mncDigit3, 
+  HEX1                         mncDigit1,
+  HEX1                         mncDigit2,
+  OCT3                         traceID_Value
+} with { 
+  variant (lengthIndicator) "LENGTHTO(mccDigit1,mccDigit2,mccDigit3,mncDigit3,
+  mncDigit1,mncDigit2,traceID_Value)"; 
+  variant "PRESENCE (elementIdentifier = '73'O; )";      
+};
+
+//8.46
+type record CompleteRequestMessage 
+{ 
+  OCT1                         elementIdentifier,   //dec 116, '74'O   
+  LIN2_BO_LAST                 lengthIndicator, 
+  BIT4                         instance,
+  BIT4                         spare,    
+  integer                      completeRequestMessageType, 
+  octetstring                  completeRequestMessageValue 
+} with { 
+  variant (lengthIndicator) "LENGTHTO(completeRequestMessageType,completeRequestMessageValue)"; 
+  variant "PRESENCE (elementIdentifier = '74'O; )";      
+}; 
+
+//8.47
+type record GUTI
+{
+  OCT1                         elementIdentifier,   //dec 117, '75'O    
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare,    
+  HEX1                         mccDigit1,
+  HEX1                         mccDigit2,
+  HEX1                         mccDigit3,
+  HEX1                         mncDigit3, 
+  HEX1                         mncDigit1,
+  HEX1                         mncDigit2,
+  OCT2                         mME_GroupID,
+  OCT1                         mME_Code,
+  octetstring                  m_TMSI
+} with { 
+  variant (lengthIndicator) "LENGTHTO(mccDigit1,mccDigit2,mccDigit3,mncDigit3, 
+  mncDigit1,mncDigit2,mME_GroupID,mME_Code,m_TMSI
+  )"; 
+  variant "PRESENCE (elementIdentifier = '75'O; )";        
+};
+
+//8.48
+type record FullyQualifiedContainer
+{
+  OCT1                         elementIdentifier,   //dec 118, '76'O     
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare,
+  integer                      containerType,
+  BIT4                         spare2,
+  F_ContainerField             f_ContainerField
+} with { 
+  variant (lengthIndicator) "LENGTHTO(containerType,spare2,f_ContainerField)"; 
+  variant "PRESENCE (elementIdentifier = '76'O; )"; 
+  variant (containerType) "FIELDLENGTH(4)";            
+  variant (f_ContainerField) "CROSSTAG(
+  uTRAN_TransparentContainer,    containerType = 1;
+  bSS_Container,                 containerType = 2; 
+  eUTRAN_TransparentContainer,   containerType = 3; 
+  nBIFOM_Container,              containerType = 4;
+  )";  
+};
+
+type union F_ContainerField
+{
+  BSS_Container_union bSS_Container,
+  octetstring uTRAN_TransparentContainer,
+  octetstring eUTRAN_TransparentContainer,
+  octetstring nBIFOM_Container
+}
+
+type set of FullyQualifiedContainer FullyQualifiedContainer_List;
+
+type union BSS_Container_union {
+  BSS_Container bSS_Container_structured,
+  octetstring bSS_Container_octet
+}
+
+//8.48-2
+type record BSS_Container
+{
+  BIT1    pFI,
+  BIT1    rP,
+  BIT1    sAPIflag,
+  BIT1    pHX,
+  BIT4    spare,
+  OCT1    packetFlowID optional,
+  BIT3    radioPriority optional,
+  BIT1    spare2 optional,
+  BIT4    sAPI optional,
+  integer xiDparametersLength optional,
+  octetstring xiDparameters optional
+} with {
+  variant "PRESENCE (spare = '0000'B; )";
+  variant (xiDparametersLength) "LENGTHTO(xiDparameters)"; 
+  variant (packetFlowID) "PRESENCE (pFI = '1'B; )";  
+  variant (radioPriority) "PRESENCE (rP = '1'B; )";  
+  variant (sAPI) "PRESENCE (sAPIflag = '1'B; )";  
+  variant (xiDparametersLength) "PRESENCE (pHX = '1'B; )";  
+  variant (xiDparameters) "PRESENCE (pHX = '1'B; )";  
+};
+
+//8.49
+type record FullyQualifiedCause
+{
+  OCT1                         elementIdentifier,   //dec 119, '77'O      
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare, 
+  BIT4                         causeType,
+  BIT4                         spare2,   
+  octetstring                  f_CauseFieldValue
+} with { 
+  variant (lengthIndicator) "LENGTHTO(causeType,spare2,f_CauseFieldValue)"; 
+  variant "PRESENCE (elementIdentifier = '77'O; )";            
+};
+
+type set of FullyQualifiedCause FullyQualifiedCause_List;
+
+//8.50
+type record PLMN_ID
+{
+  OCT1                         elementIdentifier,  //dec 120, '78'O    
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare, 
+  OCT3                         pLMN_IdentityValue   
+}with { 
+  variant (lengthIndicator) "LENGTHTO(pLMN_IdentityValue)"; 
+  variant "PRESENCE (elementIdentifier = '78'O; )";            
+};
+
+//8.51
+type record TargetIdentification
+{
+  OCT1                         elementIdentifier,  //dec 121, '79'O  
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare, 
+  integer                      targetType,
+  TargetId                     targetID
+} with { 
+  variant (lengthIndicator) "LENGTHTO(targetType,targetID)";
+  variant "PRESENCE (elementIdentifier = '79'O; )";
+  variant (targetID) "CROSSTAG( rnc_ID, targetType = 0;
+  macro_eNodeB_ID, targetType = 1;
+  cell_ID, targetType = 2;
+  home_eNodeB_ID, targetType = 3;
+  unknown, OTHERWISE)"
+};
+
+type union TargetId {
+  RNC_ID rnc_ID,
+  Macro_eNodeB_ID_TAC macro_eNodeB_ID,
+  Cell_ID cell_ID,
+  Home_eNodeB_ID_TAC home_eNodeB_ID, 
+  octetstring unknown
+}
+
+type octetstring RNC_ID;
+type octetstring Cell_ID;
+
+type record Macro_eNodeB_ID_TAC {
+  HEX1                         mccDigit1,
+  HEX1                         mccDigit2,
+  HEX1                         mccDigit3,
+  HEX1                         mncDigit3,
+  HEX1                         mncDigit1,
+  HEX1                         mncDigit2,
+  BIT4                         spare2,
+  bitstring                    targetID length(20),
+  OCT2                         tac
+} with { 
+  variant (spare2,targetID) "FIELDORDER(msb)";
+  variant (targetID) "BYTEORDER(last)";
+}
+
+type record Home_eNodeB_ID_TAC {
+  HEX1                         mccDigit1,
+  HEX1                         mccDigit2,
+  HEX1                         mccDigit3,
+  HEX1                         mncDigit3,
+  HEX1                         mncDigit1,
+  HEX1                         mncDigit2,
+  BIT4                         spare2,
+  bitstring                    targetID length(28),
+  OCT2                         tac
+} with { 
+  variant (spare2,targetID) "FIELDORDER(msb)";
+  variant (targetID) "BYTEORDER(last)";
+}
+
+// In Presence Reporting Area Action it shall be encoded as per octets 6 to 11 of the Target ID 
+type record Macro_eNodeB_ID {
+  HEX1                         mccDigit1,
+  HEX1                         mccDigit2,
+  HEX1                         mccDigit3,
+  HEX1                         mncDigit3,
+  HEX1                         mncDigit1,
+  HEX1                         mncDigit2,
+  BIT4                         spare2,
+  bitstring                    targetID length(20)
+} with { 
+  variant (spare2,targetID) "FIELDORDER(msb)";
+  variant (targetID) "BYTEORDER(last)";
+}
+
+// In Presence Reporting Area Action it shall be encoded as per octets 6 to 11 of the Target ID 
+type record Home_eNodeB_ID {
+  HEX1                         mccDigit1,
+  HEX1                         mccDigit2,
+  HEX1                         mccDigit3,
+  HEX1                         mncDigit3,
+  HEX1                         mncDigit1,
+  HEX1                         mncDigit2,
+  BIT4                         spare2,
+  bitstring                    targetID length(28)
+} with { 
+  variant (spare2,targetID) "FIELDORDER(msb)";
+  variant (targetID) "BYTEORDER(last)";
+}
+
+//8.52
+//VOID
+
+//8.53
+type record PacketFlowID
+{
+  OCT1                         elementIdentifier,  // dec 123, '7B'O 
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare, 
+  BIT4                         eBI,
+  BIT4                         spare2,
+  octetstring                  packetFlowIDValue
+} with { 
+  variant (lengthIndicator) "LENGTHTO(eBI,spare2,packetFlowIDValue)"; 
+  variant "PRESENCE (elementIdentifier = '7B'O;)";            
+};
+
+//8.54
+type record RAB_Context
+{
+  OCT1                         elementIdentifier,  // dec 124, '7C'O  
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare,   
+  BIT4                         nSAPI,
+  BIT4                         spare2,
+  integer                      dL_GTPU_SeqNumber,
+  integer                      uL_GTPU_SeqNumber,
+  integer                      dL_PDCP_SeqNumber,
+  integer                      uL_PDCP_SeqNumber
+}with { 
+  variant (lengthIndicator) "LENGTHTO(nSAPI,spare2,dL_GTPU_SeqNumber,uL_GTPU_SeqNumber,dL_PDCP_SeqNumber,uL_PDCP_SeqNumber)"; 
+  variant "PRESENCE (elementIdentifier = '7C'O;)"; 
+  variant (dL_GTPU_SeqNumber) "FIELDLENGTH(16)"; 
+  variant (dL_GTPU_SeqNumber) "BYTEORDER(last)";   
+  variant (uL_GTPU_SeqNumber) "FIELDLENGTH(16)";
+  variant (uL_GTPU_SeqNumber) "BYTEORDER(last)";    
+  variant (dL_PDCP_SeqNumber) "FIELDLENGTH(16)";  
+  variant (dL_PDCP_SeqNumber) "BYTEORDER(last)";   
+  variant (uL_PDCP_SeqNumber) "FIELDLENGTH(16)"; 
+  variant (uL_PDCP_SeqNumber) "BYTEORDER(last)";                 
+};
+
+type set of RAB_Context RAB_Context_List
+
+//8.55
+type record Source_RNC_PDCP_Context_Info
+{
+  OCT1                         elementIdentifier,  // dec 125, '7D'O  
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare, 
+  octetstring                  rRC_ContainerValue
+} with { 
+  variant (lengthIndicator) "LENGTHTO(rRC_ContainerValue)"; 
+  variant "PRESENCE (elementIdentifier = '7D'O;)";            
+};
+
+//8.56
+type record PortNumber
+{
+  OCT1                         elementIdentifier, // dec 126, '7E'O   
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare, 
+  integer                      PortNumberValue,
+  octetstring                  additionalOctets optional
+} with { 
+  variant (lengthIndicator) "LENGTHTO(PortNumberValue,additionalOctets)"; 
+  variant "PRESENCE (elementIdentifier = '7E'O;)";
+  variant (PortNumberValue) "FIELDLENGTH(16)"; 
+  variant (PortNumberValue) "BYTEORDER(last)";              
+};
+
+type set of PortNumber PortNumber_List
+
+//8.57
+type record APN_Restriction
+{
+  OCT1                         elementIdentifier,  // dec 127, '7F'O   
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare, 
+  integer                      restrictionTypeValue,
+  octetstring                  additionalOctets optional
+} with { 
+  variant (lengthIndicator) "LENGTHTO(restrictionTypeValue,additionalOctets)"; 
+  variant "PRESENCE (elementIdentifier = '7F'O;)";            
+};
+
+//8.58
+type record SelectionMode
+{
+  OCT1                         elementIdentifier,   // dec 128, '80'O  
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare, 
+  integer                      selectionModeValue,
+  BIT6                         spare2,
+  octetstring                  additionalOctets optional 
+} with { 
+  variant (lengthIndicator) "LENGTHTO(selectionModeValue,spare2,additionalOctets)"; 
+  variant "PRESENCE (elementIdentifier = '80'O;)"; 
+  variant (selectionModeValue) "FIELDLENGTH(2)";              
+};
+
+//8.59
+type record SourceIdentification
+{
+  OCT1                         elementIdentifier,   // dec 129, '81'O  
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare, 
+  OCT8                         targetCellID,
+  OCT1                         sourceType,
+  HEX1                         mccDigit1,
+  HEX1                         mccDigit2,
+  HEX1                         mccDigit3,
+  HEX1                         mncDigit3,
+  HEX1                         mncDigit1,
+  HEX1                         mncDigit2,
+  BIT4                         spare2,
+  bitstring                    sourceID length(20),
+  OCT2                         tac
+} with { 
+  variant (lengthIndicator) "LENGTHTO(targetCellID,sourceType,mccDigit1,mccDigit2,mccDigit3,
+  mncDigit3,mncDigit1,mncDigit2,spare2,
+  sourceID,tac)"; 
+  variant "PRESENCE (elementIdentifier = '81'O;)";
+  variant (spare2,sourceID) "FIELDORDER(msb)";
+  variant (sourceID) "BYTEORDER(last)";
+};   
+
+//8.60
+//VOID
+
+//8.61
+type record ChangeReportingAction
+{
+  OCT1                         elementIdentifier, // dec 131, '83'O   
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare, 
+  octetstring                  actionValue
+} with { 
+  variant (lengthIndicator) "LENGTHTO(actionValue)"; 
+  variant "PRESENCE (elementIdentifier = '83'O;)";            
+};
+
+//8.62
+type set of OCT2 PDN_CSID_List;
+
+type union NodeID
+{
+  OCT4       globalUnicastIPv4,
+  OCT16      globalUnicastIPv6,
+  OCT4       fourOctets
+};
+
+type record FullyQualifiedPDN_ConnectionSetID   //FQ CSID
+{
+  OCT1                         elementIdentifier, // dec 132, '84'O 
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare, 
+  integer                      nRofCSIDs,
+  integer                      nodeIDType,
+  NodeID                       nodeID,
+  PDN_CSID_List                pDN_CSID_List,
+  octetstring                  additionalOctets optional 
+} with { 
+  variant (lengthIndicator) "LENGTHTO(nRofCSIDs,nodeIDType,nodeID,pDN_CSID_List,additionalOctets)"; 
+  variant "PRESENCE (elementIdentifier = '84'O;)";    
+  variant (nRofCSIDs) "FIELDLENGTH(4)"; 
+  variant (nRofCSIDs) "LENGTHTO(pDN_CSID_List)"; 
+  variant (nRofCSIDs) "UNIT(elements)";    
+  variant (nodeIDType) "FIELDLENGTH(4)";
+  variant (nodeID) "CROSSTAG(
+  globalUnicastIPv4,     nodeIDType = 0;
+  globalUnicastIPv6,     nodeIDType = 1; 
+  fourOctets,            nodeIDType = 2; 
+  )";  
+};
+
+type set of FullyQualifiedPDN_ConnectionSetID FullyQualifiedPDN_ConnectionSetID_List;
+
+//8.63
+type record ChannelNeeded
+{
+  OCT1                         elementIdentifier, // dec 133, '85'O  
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare,
+  octetstring                  channelNeededValue
+} with { 
+  variant (lengthIndicator) "LENGTHTO(channelNeededValue)"; 
+  variant "PRESENCE (elementIdentifier = '85'O;)";            
+};
+
+//8.64
+type record EMLPP_Priority
+{
+  OCT1                         elementIdentifier, // dec 134, '86'O   
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare,
+  octetstring                  eMLPP_PriorityValue               
+}with { 
+  variant (lengthIndicator) "LENGTHTO(eMLPP_PriorityValue)"; 
+  variant "PRESENCE (elementIdentifier = '86'O;)";            
+};
+
+//8.65
+type record NodeType
+{
+  OCT1                         elementIdentifier,// dec 135, '87'O    
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare,
+  OCT1                         nodeTypeValue, 
+  octetstring                  additionalOctets optional
+}with { 
+  variant (lengthIndicator) "LENGTHTO(nodeTypeValue,additionalOctets)"; 
+  variant "PRESENCE (elementIdentifier = '87'O;)";            
+};
+
+//8.66
+type record FullyQualifiedDomainName
+{
+  OCT1                         elementIdentifier,  // dec 136, '88'O
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare,  
+  octetstring                  fQDN_Value
+} with { 
+  variant (lengthIndicator) "LENGTHTO(fQDN_Value)"; 
+  variant "PRESENCE (elementIdentifier = '88'O;)";
+};
+
+type set of FullyQualifiedDomainName FullyQualifiedDomainName_List;
+
+//8.67
+// Moved to GTPv2_PrivateExtensions.ttcn
+
+
+//8.68
+type record TransactionIdentifier
+{
+  OCT1                         elementIdentifier, // dec 137, '89'O
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare,
+  BIT4                         spare2,                  
+  L3_TransactionId             transactionIdentifierValue  
+} with { 
+  variant (lengthIndicator) "LENGTHTO(spare2,transactionIdentifierValue)"; 
+  variant "PRESENCE (elementIdentifier = '89'O;)";
+};
+
+type record L3_TransactionId
+{
+  BIT3               tio,
+  BIT1               tiFlag ,
+  TI_Extension       tIExtension  optional     
+  // an extension octet (TI) can be used for session management messages
+  // not yet implemented (see 24.008 clause 10.3.2 for more detail
+} with { variant (tIExtension) "PRESENCE(tio = '111'B)"
+};  
+
+type record TI_Extension
+{
+  BIT7               tI_Value,
+  BIT1               tI_ExtBit         //'1'B
+};
+
+//8.69
+type record MBMS_SessionDuration
+{
+  OCT1                         elementIdentifier, // dec 138, '8A'O
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare,
+  OCT3                         mBMS_SessionDurationValue,
+  octetstring                  additionalOctets optional
+}with { 
+  variant (lengthIndicator) "LENGTHTO(mBMS_SessionDurationValue,additionalOctets)"; 
+  variant "PRESENCE (elementIdentifier = '8A'O;)";            
+};
+
+//8.70
+type record MBMS_ServiceArea
+{
+  OCT1                         elementIdentifier, // dec 139, '8B'O
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare,
+  octetstring                  mBMS_ServiceAreaValue
+}with { 
+  variant (lengthIndicator) "LENGTHTO(mBMS_ServiceAreaValue)"; 
+  variant "PRESENCE (elementIdentifier = '8B'O;)";            
+};
+
+//8.71
+type record MBMS_SessionIdentifier
+{
+  OCT1                         elementIdentifier, // dec 140, '8C'O
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare,
+  OCT1                         mBMS_SessionIdentifierValue,
+  octetstring                  additionalOctets optional
+}with { 
+  variant (lengthIndicator) "LENGTHTO(mBMS_SessionIdentifierValue,additionalOctets)"; 
+  variant "PRESENCE (elementIdentifier = '8C'O;)";            
+};
+
+//8.72
+type record MBMS_FlowIdentifier
+{
+  OCT1                         elementIdentifier, // dec 141, '8D'O
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare,
+  OCT2                         mBMS_FlowIdentifierValue,
+  octetstring                  additionalOctets optional
+}with { 
+  variant (lengthIndicator) "LENGTHTO(mBMS_FlowIdentifierValue,additionalOctets)"; 
+  variant "PRESENCE (elementIdentifier = '8D'O;)";            
+};
+
+//8.73
+type record MBMS_IPMulticastDistribution
+{
+  OCT1                         elementIdentifier, // dec 142, '8E'O
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare,
+  OCT4                         commonTunnelEndpointIdentifierData,
+  GSN_Address                  iP_MulticastDistributionAddress,
+  GSN_Address                  iP_MulticastSourceAddress,
+  OCT1                         mBMS_HCIndicator,
+  octetstring                  additionalOctets optional
+}with { 
+  variant (lengthIndicator) "LENGTHTO(commonTunnelEndpointIdentifierData,iP_MulticastDistributionAddress,
+  iP_MulticastSourceAddress,mBMS_HCIndicator,additionalOctets)"; 
+  variant "PRESENCE (elementIdentifier = '8E'O;)";            
+};
+
+type set of MBMS_IPMulticastDistribution MBMS_IPMulticastDistribution_List;
+
+type record GSN_Address
+{ 
+  INT6b        lengthIndicator,
+  BIT2         addressType,
+  octetstring  addressValue 
+}with { 
+  variant (lengthIndicator) "LENGTHTO(addressValue)"; 
+};
+
+//8.74
+type record MBMS_DistributionAcknowledge
+{
+  OCT1                         elementIdentifier, // dec 143, '8F'O
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare,
+  BIT2                         distributionIndicationValue,
+  BIT6                         spare2,
+  octetstring                  additionalOctets optional
+}with { 
+  variant (lengthIndicator) "LENGTHTO(distributionIndicationValue,spare2,additionalOctets)"; 
+  variant "PRESENCE (elementIdentifier = '8F'O;)";            
+};
+
+//8.75
+type record User_CSG_Information
+{
+  OCT1                         elementIdentifier, // dec 145, '91'O
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare,
+  HEX1                         mccDigit1,
+  HEX1                         mccDigit2,
+  HEX1                         mccDigit3,
+  HEX1                         mncDigit3,
+  HEX1                         mncDigit1,
+  HEX1                         mncDigit2,
+  BIT5                         spare2,
+  bitstring                    cSG_ID length(27),
+  BIT1                         cMI,
+  BIT1                         lCSG,
+  BIT4                         spare3,
+  BIT2                         accessMode, 
+  octetstring                  additionalOctets optional
+}with { 
+  variant (lengthIndicator) "LENGTHTO(mccDigit1,mccDigit2,mccDigit3,
+  mncDigit3,mncDigit1,mncDigit2,
+  spare2,cSG_ID,cMI,lCSG,spare3,
+  accessMode,additionalOctets)"; 
+  variant (spare2,cSG_ID) "FIELDORDER(msb)";
+  variant (cSG_ID) "BYTEORDER(last)";
+  variant "PRESENCE (elementIdentifier = '91'O;)";            
+};
+
+//8.76
+type record CSG_InformationReportingAction
+{
+  OCT1                         elementIdentifier, // dec 146, '92'O
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare,
+  BIT1                         uCIC_SG,
+  BIT1                         uCIS_HC,
+  BIT1                         uCIU_HC,
+  BIT5                         spare2,
+  octetstring                  additionalOctets optional
+}with { 
+  variant (lengthIndicator) "LENGTHTO(uCIC_SG,uCIS_HC,uCIU_HC,spare2,additionalOctets)"; 
+  variant "PRESENCE (elementIdentifier = '92'O;)";            
+};
+
+//8.77
+type record of RFSP_Index RFSP_Index_List;
+
+type record RFSP_Index
+{
+  OCT1                         elementIdentifier, // dec 144, '90'O
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare, 
+  integer                      rFSP_IndexValue 
+}  with { 
+  variant (lengthIndicator) "LENGTHTO(rFSP_IndexValue)"; 
+  variant "PRESENCE (elementIdentifier = '90'O;)"; 
+  variant (rFSP_IndexValue) "FIELDLENGTH(16)"; 
+  variant (rFSP_IndexValue) "BYTEORDER(last)";    
+};
+
+//8.78
+type record CSG_ID
+{
+  OCT1                         elementIdentifier, // dec 147, '93'O
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare, 
+  BIT5                         spare2,
+  bitstring                    cSG_ID length(27),
+  octetstring                  additionalOctets optional
+}  with { 
+  variant (lengthIndicator) "LENGTHTO(spare2,cSG_ID,additionalOctets)"; 
+  variant (spare2,cSG_ID) "FIELDORDER(msb)";
+  variant (cSG_ID) "BYTEORDER(last)";
+  variant "PRESENCE (elementIdentifier = '93'O;)"; 
+};
+
+//8.79
+type record CSG_MembershipIndication
+{
+  OCT1                         elementIdentifier, // dec 148, '94'O
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare, 
+  BIT1                         cMI,
+  BIT7                         spare2,
+  octetstring                  additionalOctets optional
+}  with { 
+  variant (lengthIndicator) "LENGTHTO(cMI,spare2,additionalOctets)"; 
+  variant "PRESENCE (elementIdentifier = '94'O;)"; 
+};
+
+//8.80
+type record ServiceIndicator
+{
+  OCT1                         elementIdentifier, // dec 149, '95'O
+  LIN2_BO_LAST                 lengthIndicator,  //=1
+  BIT4                         instance,
+  BIT4                         spare, 
+  INT1                         serviceIndicator
+}  with { 
+  variant (lengthIndicator) "LENGTHTO(serviceIndicator)"; 
+  variant "PRESENCE (elementIdentifier = '95'O;)"; 
+};
+
+//8.81
+type record DetachType
+{
+  OCT1                         elementIdentifier, // dec 150, '96'O
+  LIN2_BO_LAST                 lengthIndicator,  //=1
+  BIT4                         instance,
+  BIT4                         spare, 
+  INT1                         detachType
+} with { 
+  variant (lengthIndicator) "LENGTHTO(detachType)"; 
+  variant "PRESENCE (elementIdentifier = '96'O;)"; 
+};
+
+//8.82
+type record LocalDistinguishedName
+{
+  OCT1                         elementIdentifier, // dec 151 '97'O
+  LIN2_BO_LAST                 lengthIndicator, 
+  BIT4                         instance,
+  BIT4                         spare,
+  charstring                   lDN length (1..400) 
+} with { 
+  variant (lengthIndicator) "LENGTHTO(lDN)"; 
+  variant "PRESENCE (elementIdentifier = '97'O;)"; 
+};
+
+type set of LocalDistinguishedName LocalDistinguishedName_List
+
+//8.83
+type record NodeFeatures
+{
+  OCT1                         elementIdentifier, // dec 152, '98'O
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare, 
+  BIT1                         pRN,
+  BIT1                         mABR,
+  BIT1                         nTSR,
+  BIT1                         cIOT,
+  BIT4                         spare2,
+  octetstring                  additionalOctets optional
+}with { 
+  variant (lengthIndicator) "LENGTHTO(pRN,mABR,nTSR,cIOT,spare2,additionalOctets)";
+  variant "PRESENCE (elementIdentifier = '98'O;)"; 
+};
+
+//8.84
+type record MBMSTimetoDataTransfer
+{
+  OCT1                         elementIdentifier, // dec 153, '99'O
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare, 
+  OCT1                         mBMSTimetoDataTransfervalue,
+  octetstring                  additionalOctets optional
+} with { 
+  variant (lengthIndicator) "LENGTHTO(mBMSTimetoDataTransfervalue, additionalOctets)"; 
+  variant "PRESENCE (elementIdentifier = '99'O;)"; 
+};
+
+//8.85
+type record Throttling
+{
+  OCT1                         elementIdentifier, // dec 154, '9A'O
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare, 
+  INT5b                        throttlingDelayValue,
+  BIT3                         throttlingDelayUnit,
+  INT1                         throttlingfactor,
+  octetstring                  additionalOctets optional 
+}with { 
+  variant (lengthIndicator) "LENGTHTO(throttlingDelayValue,throttlingDelayUnit,throttlingfactor,additionalOctets)"; 
+  variant "PRESENCE (elementIdentifier = '9A'O;)";  
+};
+
+
+//8.86
+type record AllocationRetentionPriority
+{
+  OCT1                         elementIdentifier, // dec 155, '9B'O
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare, 
+  BIT1                         pVI,
+  BIT1                         spare2,
+  BIT4                         pL,
+  BIT1                         pCI,
+  BIT1                         spare3,
+  octetstring                  additionalOctets optional
+} with { 
+  variant (lengthIndicator) "LENGTHTO(pVI,spare2,pL,pCI,spare3,additionalOctets)"; 
+  variant "PRESENCE (elementIdentifier = '9B'O;)"; 
+};
+
+//8.87
+type record EPC_Timer
+{
+  OCT1                         elementIdentifier, // dec 156, '9C'O
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare, 
+  INT5b                        timerValue,  
+  BIT3                         timerUnit,
+  octetstring                  additionalOctets optional
+} with { 
+  variant (lengthIndicator) "LENGTHTO(timerValue,timerUnit,additionalOctets)"; 
+  variant "PRESENCE (elementIdentifier = '9C'O;)"; 
+};
+
+//8.88
+type record SignallingPriorityIndication
+{
+  OCT1                         elementIdentifier, // dec 157, '9D'O
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare, 
+  BIT1                         lAPI,
+  BIT7                         spare2,
+  octetstring                  additionalOctets optional
+}with { 
+  variant (lengthIndicator) "LENGTHTO(lAPI,spare2,additionalOctets)"; 
+  variant "PRESENCE (elementIdentifier = '9D'O;)"; 
+};
+
+//8.89
+type record TMGI
+{
+  OCT1                         elementIdentifier, // dec 158, '9E'O
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare, 
+  OCT3                         mBMSServiceID,
+  HEX1                         mccDigit1,
+  HEX1                         mccDigit2,
+  HEX1                         mccDigit3,
+  HEX1                         mncDigit3,
+  HEX1                         mncDigit1,
+  HEX1                         mncDigit2,
+  octetstring                  additionalOctets optional
+} with { 
+  variant (lengthIndicator) "LENGTHTO(mBMSServiceID, mccDigit1,
+  mccDigit2, mccDigit3, mncDigit1,
+  mncDigit2, mncDigit3,
+  additionalOctets)"; 
+  variant "PRESENCE (elementIdentifier = '9E'O;)"; 
+};
+
+//8.90
+type record AdditionalMMContextForSRVCC
+{
+  OCT1                         elementIdentifier, // dec 159, '9F'O
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare,
+  integer                      mobileStationClassmark2Length,
+  MobileStationClassmark2      mobileStationClassmark2,
+  integer                      mobileStationClassmark3Length,
+  octetstring                  mobileStationClassmark3,
+  integer                      supportedCodecListLength,
+  SupportedCodecList           supportedCodecList,
+  octetstring                  additionalOctets optional 
+}with { 
+  variant (lengthIndicator) "LENGTHTO(mobileStationClassmark2Length,mobileStationClassmark2, 
+  mobileStationClassmark3Length,mobileStationClassmark3,
+  supportedCodecListLength,supportedCodecList,
+  additionalOctets)"; 
+  variant (mobileStationClassmark2Length) "LENGTHTO(mobileStationClassmark2)"; 
+  variant (mobileStationClassmark3Length) "LENGTHTO(mobileStationClassmark3)"; 
+  variant (supportedCodecListLength) "LENGTHTO(supportedCodecList)"; 
+  variant "PRESENCE (elementIdentifier = '9F'O;)";            
+};
+
+// 24.008/ 10.5.1.6 MobileStationClassmark2
+//4th octet:
+type record MobileStationClassmark2_oct4
+{
+  BIT1  fc,
+  BIT1  vgcs,
+  BIT1  vbs,
+  BIT1  sm_Capability,
+  BIT2  ss_ScreenIndicator,
+  BIT1  ps_Capability, 
+  BIT1  spare2_1 
+};
+
+
+//5th octet ( Table 10.5.6a ):
+type record MobileStationClassmark2_oct5
+{
+  BIT1  a5_2, 
+  BIT1  a5_3,
+  BIT1  cmsp,
+  BIT1  solsa,
+  BIT1  ucs2,
+  BIT1  lcsva_cap,
+  BIT1  spare5_7,
+  BIT1  cm3
+};
+
+type record MobileStationClassmark2
+{
+  BIT3  rf_PowerCapability,
+  BIT1  a5_1,
+  BIT1  esind,
+  BIT2  revisionLevel, 
+  BIT1  spare1_1, 
+  MobileStationClassmark2_oct4  mobileStationClassmark2_oct4    optional,
+  MobileStationClassmark2_oct5  mobileStationClassmark2_oct5    optional
+};
+
+
+// TS 24008/10.5.4.32 Supported Codec List
+type record Codec
+{
+  OCT1  systemIdentification,
+  integer  lengthOfBitmap,
+  OCT1  codecBitmap_bits1to8,
+  OCT1  codecBitmap_bits9to16 optional,
+  octetstring additional_codecs optional
+} with {
+  variant (lengthOfBitmap) "LENGTHTO(codecBitmap_bits1to8,codecBitmap_bits9to16,additional_codecs)"; 
+}; 
+
+type record of Codec SupportedCodecList; 
+
+//8.91
+type record AdditionalFlagsForSRVCC
+{
+  OCT1                         elementIdentifier, // dec 160, 'A0'O
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare, 
+  BIT1                         iCS,
+  BIT7                         spare2,
+  octetstring                  additionalOctets optional
+} with { 
+  variant (lengthIndicator) "LENGTHTO(iCS, spare2, additionalOctets)"; 
+  variant "PRESENCE (elementIdentifier = 'A0'O;)"; 
+};
+
+// Sv Information Elements
+// 3GPP TS 29.280 6.2
+type record STN_SR
+{
+  OCT1                         elementIdentifier, // dec 51, '33'O
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare,
+  OCT1                         nanpi,
+  hexstring                    sTN_SR_Value
+}with { 
+  variant (lengthIndicator) "LENGTHTO(nanpi,sTN_SR_Value)";
+  variant "PRESENCE (elementIdentifier = '33'O;)";  
+  variant (sTN_SR_Value) "PADDING(yes)";
+  variant (sTN_SR_Value) "PADDING_PATTERN('1'B)";          
+};
+
+//8.92 Void
+/*type record MMBR
+{
+  OCT1                         elementIdentifier, // dec 161, 'A1'O
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare,
+  OCT4                         maxMMBR_for_uplink, 
+  OCT4                         maxMMBR_for_downlink,
+  octetstring                  additionalOctets optional
+}with { 
+  variant (lengthIndicator) "LENGTHTO(maxMMBR_for_uplink,maxMMBR_for_downlink,additionalOctets)"; 
+  variant "PRESENCE (elementIdentifier = 'A1'O;)"; 
+};*/
+
+
+//8.93
+type record MDT_Configuration
+{
+  OCT1                         elementIdentifier, // dec 162, 'A2'O
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare,
+  OCT1                         jobType,
+  OCT4                         listOfmeasurements,
+  OCT1                         reportingTrigger,
+  OCT1                         reportInterval,
+  OCT1                         reportAmount,
+  OCT1                         eventThresholdforRSRP,  
+  OCT1                         eventThresholdforRSRQ,
+  INT1                         lengthOfAreaScope,
+  octetstring                  areaScope optional,
+  BIT1                         cRRMI,
+  BIT1                         mPI,
+  BIT1                         pMI,
+  BIT1                         pLI,
+  BIT4                         spare2,
+  CollectionPeriodforRRMmeasurementsLTE collectionPeriodforRRMmeasurementsLTE optional,
+  MeasurementPeriodLTE         measurementPeriodLTE optional,
+  PositioningMethod            positioningMethod optional,
+  INT1                         numberOfMDT_PLMNs optional,
+  MDT_PLMN_List                mDT_PLMN_List length(0..16) optional,
+  octetstring                  additionalOctets optional
+}with { 
+  variant (lengthIndicator) "LENGTHTO(jobType,listOfmeasurements,reportingTrigger,
+  reportInterval,reportAmount,eventThresholdforRSRP,
+  eventThresholdforRSRQ,lengthOfAreaScope,areaScope,
+  cRRMI,mPI,pMI,pLI,spare2,
+  collectionPeriodforRRMmeasurementsLTE,measurementPeriodLTE,positioningMethod,
+  numberOfMDT_PLMNs,mDT_PLMN_List,additionalOctets )"; 
+  variant "PRESENCE (elementIdentifier = 'A2'O;)"; 
+  variant (lengthOfAreaScope) "LENGTHTO(areaScope)";  
+  variant (collectionPeriodforRRMmeasurementsLTE) "PRESENCE(cRRMI = '1'B)";   
+  variant (measurementPeriodLTE) "PRESENCE(mPI = '1'B)";   
+  variant (positioningMethod) "PRESENCE(pMI = '1'B)";   
+  variant (mDT_PLMN_List) "PRESENCE(pLI = '1'B)";   
+  variant (numberOfMDT_PLMNs) "PRESENCE(pLI = '1'B)";   
+  variant (numberOfMDT_PLMNs) "LENGTHTO(mDT_PLMN_List)";  
+  variant (numberOfMDT_PLMNs) "UNIT(elements)"; 
+};
+
+//5.10.19 3GPP TS 32.422
+type record PositioningMethod
+{
+  BIT1 gNSS,
+  BIT1  eCellID,
+  BIT6  spare
+}
+//5.10.20 3GPP TS 32.422
+type enumerated CollectionPeriodforRRMmeasurementsLTE
+{
+  ms1024 (0),
+  ms1280 (1),
+  ms2048 (2),
+  ms2560 (3),
+  ms5120 (4),
+  ms10240 (5),
+  min1 (6)
+} with { variant "FIELDLENGTH(8)"; }
+
+//5.10.23 3GPP TS 32.422
+type enumerated MeasurementPeriodLTE
+{
+  ms1024 (0),
+  ms1280 (1),
+  ms2048 (2),
+  ms2560 (3),
+  ms5120 (4),
+  ms10240 (5),
+  min1 (6)
+} with { variant "FIELDLENGTH(8)"; }
+
+//9.2.1.89, 9.2.3.8 TS 32.422
+type record of OCT3 MDT_PLMN_List;
+
+//8.94
+type record APCO
+{
+  OCT1                         elementIdentifier, // dec 163, 'A3'O
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare,
+  BIT3                         configProtocol,
+  BIT4                         spare2,  //'0000'B
+  BIT1                         extensionField,   //'1'B
+  ProtocolIDs_and_ContainerIDs protocolIDs_and_ContainerIDs optional,
+  octetstring                  additionalOctets optional    
+}with { 
+  variant (lengthIndicator) "LENGTHTO(configProtocol,spare2,extensionField,protocolIDs_and_ContainerIDs,additionalOctets)"; 
+  variant "PRESENCE (elementIdentifier = 'A3'O;)";  
+};
+
+//8.95
+type record AbsoluteTimeofMBMSDataTransfer
+{
+  OCT1                         elementIdentifier, // dec 164, 'A4'O
+  LIN2_BO_LAST                 lengthIndicator,
+  BIT4                         instance,
+  BIT4                         spare, 
+  OCT8                         value_part,
+  octetstring                  additionalOctets optional
+} with { 
+  variant (lengthIndicator) "LENGTHTO( value_part, additionalOctets)"; 
+  variant "PRESENCE (elementIdentifier = 'A4'O;)"; 
+};
+
+//8.96
+type record HeNBInformationReporting
+{
+  OCT1            elementIdentifier, // dec 165, 'A5'O
+  LIN2_BO_LAST    lengthIndicator,
+  BIT4            instance,
+  BIT4            spare,
+  BIT1            FTI,
+  BIT7            spare2,
+  octetstring     additionalOctets optional
+}with { 
+  variant (lengthIndicator) "LENGTHTO(FTI,spare2,additionalOctets)"; 
+  variant "PRESENCE (elementIdentifier = 'A5'O;)"; 
+};
+
+//8.97
+type record IPv4ConfigurationPrameters
+{
+  OCT1            elementIdentifier, // dec 166, 'A6'O
+  LIN2_BO_LAST    lengthIndicator,
+  BIT4            instance,
+  BIT4            spare,
+  INT1            subnetPrefixLength,
+  OCT4            iPv4DefaultRouterAddress,
+  octetstring     additionalOctets optional
+}with { 
+  variant (lengthIndicator) "LENGTHTO(subnetPrefixLength,iPv4DefaultRouterAddress,additionalOctets)"; 
+  variant "PRESENCE (elementIdentifier = 'A6'O;)"; 
+}
+
+//8.98
+type record ChangeToReportFlags
+{
+  OCT1            elementIdentifier, // dec 167, 'A7'O
+  LIN2_BO_LAST    lengthIndicator,
+  BIT4            instance,
+  BIT4            spare,
+  BIT1            servingNetworkChangeToReport,
+  BIT1            timeZoneChangeToReport,
+  BIT6            spare2, //'000000'B
+  octetstring     additionalOctets optional
+}with { 
+  variant (lengthIndicator) "LENGTHTO(servingNetworkChangeToReport,timeZoneChangeToReport,spare2,additionalOctets)"; 
+  variant "PRESENCE (elementIdentifier = 'A7'O;)"; 
+}
+
+
+//8.99
+type record ActionIndication
+{
+  OCT1            elementIdentifier, // dec 168, 'A8'O
+  LIN2_BO_LAST    lengthIndicator,
+  BIT4            instance,
+  BIT4            spare,
+  BIT3            indication,
+  BIT5            spare2,
+  octetstring     additionalOctets optional
+}with { 
+  variant (lengthIndicator) "LENGTHTO(indication,spare2,additionalOctets)"; 
+  variant "PRESENCE (elementIdentifier = 'A8'O;)"; 
+}
+
+//8.100
+type record TrustedWLANAccessNetworkIdentifier
+{
+  OCT1            elementIdentifier,	//dec 169, 'A9'O
+  LIN2_BO_LAST    lengthIndicator,
+  BIT4            instance,
+  BIT4            spare,
+  BIT1            bssIdIndicator,
+  BIT1            cIVAI,
+  BIT1            pLMNI,
+  BIT1            oPNAI,
+  BIT1            lAAI,
+  BIT3            spare2,
+  INT1            lengthOfSSID,
+  octetstring     SSID,
+  OCT6            BSSID optional,
+  INT1            lengthOfCivicAddress optional,
+  octetstring     civicAddressInformation optional,
+  OCT4            tWAN_PLMNID optional,
+  INT1            lengthOfTWANOperatorName optional,
+  octetstring     tWANOperatorName optional,
+  INT1            relayIdentityType optional,
+  INT1            lengthOfRelayIdentity optional,
+  octetstring     relayIdentity optional,
+  INT1            lengthOfcircuitID optional,
+  octetstring     circuitID optional,
+  octetstring     additionalOctets optional
+}with { 
+  variant (lengthIndicator) "LENGTHTO(bssIdIndicator,cIVAI,pLMNI,oPNAI,lAAI,spare2,
+  lengthOfSSID,SSID,BSSID,additionalOctets)"; 
+  variant "PRESENCE (elementIdentifier = 'A9'O;)";
+  variant (lengthOfSSID) "LENGTHTO(SSID)"; 
+  variant (civicAddressInformation) "PRESENCE(cIVAI = '1'B)";   
+  variant (lengthOfCivicAddress) "PRESENCE(cIVAI = '1'B)";   
+  variant (lengthOfCivicAddress) "LENGTHTO(civicAddressInformation)"; 
+  variant (tWAN_PLMNID) "PRESENCE(pLMNI = '1'B)";   
+  variant (tWANOperatorName) "PRESENCE(oPNAI = '1'B)";   
+  variant (lengthOfTWANOperatorName) "PRESENCE(oPNAI = '1'B)";   
+  variant (lengthOfTWANOperatorName) "LENGTHTO(tWANOperatorName)"; 
+  variant (relayIdentityType) "PRESENCE(lAAI = '1'B)";   
+  variant (lengthOfRelayIdentity) "PRESENCE(lAAI = '1'B)";   
+  variant (relayIdentity) "PRESENCE(lAAI = '1'B)";   
+  variant (lengthOfcircuitID) "PRESENCE(lAAI = '1'B)";   
+  variant (circuitID) "PRESENCE(lAAI = '1'B)";   
+  variant (lengthOfRelayIdentity) "LENGTHTO(relayIdentity)"; 
+  variant (lengthOfcircuitID) "LENGTHTO(circuitID)";
+};
+
+type set of TrustedWLANAccessNetworkIdentifier TrustedWLANAccessNetworkIdentifier_List;
+
+//8.101
+type record UserLocationInformationTimestamp
+{
+  OCT1          elementIdentifier,	//dec 170, 'AA'O
+  LIN2_BO_LAST  lengthIndicator,
+  BIT4          instance,
+  BIT4          spare,
+  OCT4          timestampValue,
+  octetstring   additionalOctets optional
+}with { 
+  variant (lengthIndicator) "LENGTHTO(timestampValue, additionalOctets)"; 
+  variant "PRESENCE (elementIdentifier = 'AA'O;)";
+}
+
+//8.102
+type record MBMSFlags
+{
+  OCT1          elementIdentifier,	//dec 171, 'AB'O
+  LIN2_BO_LAST  lengthIndicator,
+  BIT4          instance,
+  BIT4          spare,
+  BIT1          mSRI,
+  BIT1          lMR,
+  BIT6          spare2,
+  octetstring   additionalOctets optional
+}with { 
+  variant (lengthIndicator) "LENGTHTO(mSRI,lMR,spare2,additionalOctets)"; 
+  variant "PRESENCE (elementIdentifier = 'AB'O;)";
+}
+
+//8.103
+type record RAN_NASCause
+{
+  OCT1          elementIdentifier,	//dec 172, 'AC'O
+  LIN2_BO_LAST  lengthIndicator,
+  BIT4          instance,
+  BIT4          spare,
+  BIT4          causeType,
+  BIT4          protocolType,
+  OCT1          causeValue,
+  octetstring   additionalOctets optional
+}with { 
+  variant (lengthIndicator) "LENGTHTO(causeType, protocolType, causeValue, additionalOctets)"; 
+  variant "PRESENCE (elementIdentifier = 'AC'O;)";
+}
+
+type set of RAN_NASCause RAN_NASCause_List;
+
+//8.104
+type record CNOperatorSelectionEntity
+{
+  OCT1          elementIdentifier,	//dec 173, 'AD'O
+  LIN2_BO_LAST  lengthIndicator,
+  BIT4          instance,
+  BIT4          spare,
+  BIT2          selectionEntity,
+  BIT6          spare2,
+  octetstring   additionalOctets optional
+}with { 
+  variant (lengthIndicator) "LENGTHTO(selectionEntity, spare2, additionalOctets)"; 
+  variant "PRESENCE (elementIdentifier = 'AD'O;)";
+}
+
+//8.105
+type record TrustedWLANModeIndication
+{
+  OCT1          elementIdentifier,	//dec 174, 'AE'O
+  LIN2_BO_LAST  lengthIndicator,
+  BIT4          instance,
+  BIT4          spare,
+  BIT1          sCM,
+  BIT1          mCM,
+  BIT6          spare2,
+  octetstring   additionalOctets optional
+}with { 
+  variant (lengthIndicator) "LENGTHTO(sCM, mCM, spare2, additionalOctets)"; 
+  variant "PRESENCE (elementIdentifier = 'AE'O;)";
+}
+
+//8.106
+type record NodeNumber
+{
+  OCT1          elementIdentifier,	//dec 175, 'AF'O
+  LIN2_BO_LAST  lengthIndicator,
+  BIT4          instance,
+  BIT4          spare,
+  LIN1          lenghOfNodeNumber,
+  octetstring   nodeNumber,
+  octetstring   additionalOctets optional
+}with { 
+  variant (lengthIndicator) "LENGTHTO(lenghOfNodeNumber, nodeNumber, additionalOctets)"; 
+  variant (lenghOfNodeNumber) "LENGTHTO(nodeNumber)"; 
+  variant "PRESENCE (elementIdentifier = 'AF'O;)";
+}
+
+type set of NodeNumber NodeNumber_List;
+
+//8.107
+type record NodeIdentifier
+{
+  OCT1          elementIdentifier,	//dec 176, 'B0'O
+  LIN2_BO_LAST  lengthIndicator,
+  BIT4          instance,
+  BIT4          spare,
+  LIN1          lenghOfNodeName,
+  octetstring   nodeName,
+  LIN1          lenghOfNodeRealm,
+  octetstring   nodeRealm,
+  octetstring   additionalOctets optional
+}with { 
+  variant (lengthIndicator) "LENGTHTO(lenghOfNodeName,nodeName,lenghOfNodeRealm,nodeRealm, additionalOctets)"; 
+  variant (lenghOfNodeName) "LENGTHTO(nodeName)"; 
+  variant (lenghOfNodeRealm) "LENGTHTO(nodeRealm)"; 
+  variant "PRESENCE (elementIdentifier = 'B0'O;)";
+}
+
+type set of NodeIdentifier NodeIdentifier_List;
+  
+//8.108
+type record PresenceReportingAreaAction
+{
+  OCT1            elementIdentifier,	//dec 177, 'B1'O
+  LIN2_BO_LAST    lengthIndicator,
+  BIT4            instance,
+  BIT4            spare,
+  BIT3            actionField,
+  BIT1            iNAPRA,
+  BIT4            spare2,
+  OCT3            presenceReportingAreaIdentifier optional,
+  INT4b           numberOfRAI (0..15) optional,
+  INT4b           numberOfTAI (0..15) optional,
+  INT6b           numberOfMacroENodeB (0..63) optional,
+  BIT2            spare3 optional,
+  INT6b           numberOfHomeENodeB (0..63) optional,
+  BIT2            spare4 optional,
+  INT6b           numberOfECGI (0..63) optional,
+  BIT2            spare5 optional,
+  INT6b           numberOfSAI (0..63) optional,
+  BIT2            spare6 optional,
+  INT6b           numberOfCGI (0..63) optional,
+  BIT2            spare7 optional,
+  TAIList         tAIs optional,
+  Macro_eNB_ID_List  macroENBIDs optional,
+  Home_eNB_ID_List  homeENBIDs optional,
+  ECGIList        eCGIs optional,
+  RAIList         rAIs optional,
+  SAIList         sAIs optional,
+  CGIList         cGIs optional,
+  INT6b           numberOfExtendedMacroENODEB (0..63) optional,
+  BIT2            spare8 optional,
+  ExtendedMacro_eNB_ID_List  extendedMacroENBIDs optional,
+  octetstring     additionalOctets optional
+}with { 
+  variant (lengthIndicator) "LENGTHTO(actionField,iNAPRA,spare2,presenceReportingAreaIdentifier,numberOfRAI,numberOfTAI,numberOfMacroENodeB,
+  spare3,numberOfHomeENodeB,spare4,numberOfECGI,spare5,numberOfSAI,spare6,numberOfCGI,spare7,tAIs,macroENBIDs,homeENBIDs,
+  eCGIs,rAIs,sAIs,cGIs,numberOfExtendedMacroENODEB,spare8,extendedMacroENBIDs,additionalOctets)"; 
+  variant (numberOfRAI) "LENGTHTO(rAIs)";
+  variant (numberOfRAI) "UNIT(elements)"; 
+  variant (numberOfTAI) "LENGTHTO(tAIs)";
+  variant (numberOfTAI) "UNIT(elements)"; 
+  variant (numberOfMacroENodeB) "LENGTHTO(macroENBIDs)";
+  variant (numberOfMacroENodeB) "UNIT(elements)"; 
+  variant (numberOfHomeENodeB) "LENGTHTO(homeENBIDs)";
+  variant (numberOfHomeENodeB) "UNIT(elements)"; 
+  variant (numberOfECGI) "LENGTHTO(eCGIs)";
+  variant (numberOfECGI) "UNIT(elements)"; 
+  variant (numberOfSAI) "LENGTHTO(sAIs)";
+  variant (numberOfSAI) "UNIT(elements)"; 
+  variant (numberOfCGI) "LENGTHTO(cGIs)";
+  variant (numberOfCGI) "UNIT(elements)"; 
+  variant (numberOfExtendedMacroENODEB) "LENGTHTO(extendedMacroENBIDs)";
+  variant (numberOfExtendedMacroENODEB) "UNIT(elements)"; 
+  variant "PRESENCE (elementIdentifier = 'B1'O;)";
+}
+
+type set of PresenceReportingAreaAction PresenceReportingAreaAction_List;
+
+type set of TAI TAIList;
+type set of ECGI ECGIList;
+type set of RAI RAIList;
+type set of SAI SAIList;
+type set of CGI CGIList;
+type set of Macro_eNodeB_ID Macro_eNB_ID_List;
+type set of Home_eNodeB_ID Home_eNB_ID_List;
+type set of ExtendedMacro_eNodeB_ID ExtendedMacro_eNB_ID_List;
+
+//8.109
+type record PresenceReportingAreaInformation
+{
+  OCT1          elementIdentifier,	//dec 178, 'B2'O
+  LIN2_BO_LAST  lengthIndicator,
+  BIT4          instance,
+  BIT4          spare,
+  OCT3          presenceReportingAreaIdentifier,
+  BIT1          iPRA,
+  BIT1          oPRA,
+  BIT1          aPRA,
+  BIT1          iNAPRA,
+  BIT4          spare2,
+  AdditionalPRA additionalPRA optional,
+  octetstring   additionalOctets optional
+}with { 
+  variant (lengthIndicator) "LENGTHTO(presenceReportingAreaIdentifier,iPRA,oPRA,aPRA,iNAPRA, spare2,additionalPRA, additionalOctets)"; 
+  variant (additionalPRA) "PRESENCE(iNAPRA = '0'B)";   
+  variant (additionalPRA) "PRESENCE(aPRA = '1'B)";   
+  variant "PRESENCE (elementIdentifier = 'B2'O;)";
+}
+
+type set of PresenceReportingAreaInformation PresenceReportingAreaInformation_List;
+
+
+type record AdditionalPRA
+{
+  OCT3 additionalPRA_Identifier,
+  BIT1 iPRA,
+  BIT1 oPRA,
+  BIT1 aPRA,
+  BIT5 spare,
+  AdditionalPRA additionalPRA optional
+}with { 
+  variant (additionalPRA) "PRESENCE(aPRA = '1'B)";   
+}
+
+//8.110
+type record TWANIdentifierTimestamp
+{
+  OCT1          elementIdentifier,	//dec 179, 'B3'O
+  LIN2_BO_LAST  lengthIndicator,
+  BIT4          instance,
+  BIT4          spare,
+  OCT4          tWANIdentifierTimestampValue,
+  octetstring   additionalOctets optional
+}with { 
+  variant (lengthIndicator) "LENGTHTO(tWANIdentifierTimestampValue, additionalOctets)"; 
+  variant "PRESENCE (elementIdentifier = 'B3'O;)";
+}
+
+type set of TWANIdentifierTimestamp TWANIdentifierTimestamp_List
+  
+//8.111
+type record OverloadControlInformationGrouped
+{
+  OCT1          elementIdentifier,	//dec 180, 'B4'O
+  LIN2_BO_LAST  lengthIndicator,
+  BIT4          instance,
+  BIT4          spare,
+  OverloadControlInformationIEs overloadControlInformationIEs
+}with { 
+  variant (lengthIndicator) "LENGTHTO(overloadControlInformationIEs)"; 
+  variant "PRESENCE (elementIdentifier = 'B4'O;)";
+}
+
+type set OverloadControlInformationIEs
+{
+  SequenceNumber  overloadControlSequenceNumber optional,
+  Metric          overloadReductionMetric optional,
+  EPC_Timer       periodOfValidity optional,
+  AccessPointName listOfAccessPointName optional
+} 
+
+type set of OverloadControlInformationGrouped OverloadControlInformationGrouped_List;
+
+//8.112
+type record LoadControlInformationGrouped
+{
+  OCT1          elementIdentifier,	//dec 181, 'B5'O
+  LIN2_BO_LAST  lengthIndicator,
+  BIT4          instance,
+  BIT4          spare,
+  LoadControlInformationIEs loadControlInformationIEs
+}with { 
+  variant (lengthIndicator) "LENGTHTO(loadControlInformationIEs)"; 
+  variant "PRESENCE (elementIdentifier = 'B5'O;)";
+}
+
+type set LoadControlInformationIEs
+{
+  SequenceNumber  loadControlSequenceNumber optional,
+  Metric          loadMetric optional,
+  APNandRelativeCapacity  listOfAPNandRelativeCapacity optional
+}
+
+type set of LoadControlInformationGrouped LoadControlInformationGrouped_List;
+
+//8.113
+type record Metric
+{
+  OCT1          elementIdentifier,	//dec 182, 'B6'O
+  LIN2_BO_LAST  lengthIndicator (1),
+  BIT4          instance,
+  BIT4          spare,
+  LIN1          metric (0..100)
+}with { 
+  variant (lengthIndicator) "LENGTHTO(metric)"; 
+  variant "PRESENCE (elementIdentifier = 'B6'O;)";
+}
+
+//8.114
+type record SequenceNumber
+{
+  OCT1          elementIdentifier,	//dec 183, 'B7'O
+  LIN2_BO_LAST  lengthIndicator (4),
+  BIT4          instance,
+  BIT4          spare,
+  LIN4_BO_LAST  sequenceNumber
+}with { 
+  variant (lengthIndicator) "LENGTHTO(sequenceNumber)"; 
+  variant "PRESENCE (elementIdentifier = 'B7'O;)";
+}
+
+//8.115
+type record APNandRelativeCapacity
+{
+  OCT1            elementIdentifier,	//dec 184, 'B8'O
+  LIN2_BO_LAST    lengthIndicator,
+  BIT4            instance,
+  BIT4            spare,
+  LIN1            relativeCapacity (0..100),
+  LIN1            aPNLength,
+  AccessPointName accessPointName,
+  octetstring     additionalOctets optional
+}with { 
+  variant (lengthIndicator) "LENGTHTO(relativeCapacity,aPNLength,accessPointName, additionalOctets)"; 
+  variant (aPNLength) "LENGTHTO(accessPointName)"; 
+  variant "PRESENCE (elementIdentifier = 'B8'O;)";
+}
+
+//8.116
+type record WLANOffloadabilityIndication
+{
+  OCT1            elementIdentifier,	//dec 185, 'B9'O
+  LIN2_BO_LAST    lengthIndicator,
+  BIT4            instance,
+  BIT4            spare,
+  BIT1            uTRANIndication,
+  BIT1            eUTRANIndication,
+  BIT6            spare2,
+  octetstring     additionalOctets optional
+}with { 
+  variant (lengthIndicator) "LENGTHTO(uTRANIndication, eUTRANIndication, spare2, additionalOctets)"; 
+  variant "PRESENCE (elementIdentifier = 'B9'O;)";
+}
+
+//8.117
+type record PagingAndServiceInformation
+{
+  OCT1            elementIdentifier,	//dec 186, 'BA'O
+  LIN2_BO_LAST    lengthIndicator,
+  BIT4            instance,
+  BIT4            spare,
+  integer         ePS_Bearer_ID_Value,
+  BIT4            spare2,
+  BIT1            pPI,
+  BIT7            spare3,
+  BIT6            pagingPolicyIndicationValue optional,
+  BIT2            spare4 optional,
+  octetstring     additionalOctets optional
+}with { 
+  variant (lengthIndicator) "LENGTHTO(ePS_Bearer_ID_Value,spare2,pPI,spare3,pagingPolicyIndicationValue,spare4,additionalOctets)"; 
+  variant(ePS_Bearer_ID_Value) "FIELDLENGTH(4)"; 
+  variant "PRESENCE (elementIdentifier = 'BA'O;)";
+  variant (pagingPolicyIndicationValue) "PRESENCE(pPI = '1'B)";   
+  variant (spare4) "PRESENCE(pPI = '1'B)";   
+}
+
+//8.118
+type record IntegerNumber
+{
+  OCT1            elementIdentifier,	//dec 187, 'BB'O
+  LIN2_BO_LAST    lengthIndicator,
+  BIT4            instance,
+  BIT4            spare,
+  IntegerNumberValue integerNumberValue optional
+}with { 
+  variant (lengthIndicator) "LENGTHTO(integerNumberValue)"; 
+  variant "PRESENCE (elementIdentifier = 'BB'O;)";
+  variant (integerNumberValue)"CROSSTAG(int1,lengthIndicator=1;
+  int2,lengthIndicator=2)"
+}
+
+type union IntegerNumberValue
+{
+  LIN1 int1,
+  LIN2_BO_LAST int2
+}
+
+//8.119
+type record MillisecondTimeStamp
+{
+  OCT1            elementIdentifier,	//dec 188, 'BC'O
+  LIN2_BO_LAST    lengthIndicator,
+  BIT4            instance,
+  BIT4            spare,
+  OCT6            millisecondTimeStampValue,
+  octetstring     additionalOctets optional
+}with { 
+  variant (lengthIndicator) "LENGTHTO(millisecondTimeStampValue,additionalOctets)"; 
+  variant "PRESENCE (elementIdentifier = 'BC'O;)";
+}
+
+//8.120
+type record MonitoringEventInformation
+{
+  OCT1            elementIdentifier,	//dec 189, 'BD'O
+  LIN2_BO_LAST    lengthIndicator,
+  BIT4            instance,
+  BIT4            spare,
+  OCT4            sCEFReferenceID,  //Unsigned32 ?
+  LIN1            sCEF_ID_length,
+  octetstring     sCEF_ID,
+  OCT2            remainingNumberOfReports, //Unsigned32 ?
+  octetstring     additionalOctets optional
+}with { 
+  variant (lengthIndicator) "LENGTHTO(sCEFReferenceID,sCEF_ID_length,sCEF_ID,remainingNumberOfReports,additionalOctets)"; 
+  variant (sCEF_ID_length) "LENGTHTO(sCEF_ID)"; 
+  variant "PRESENCE (elementIdentifier = 'BD'O;)";
+}
+
+//8.121
+type record ECGI_List
+{
+  OCT1            elementIdentifier,	//dec 190, 'BE'O
+  LIN2_BO_LAST    lengthIndicator,
+  BIT4            instance,
+  BIT4            spare,
+  LIN2_BO_LAST    numberOfECGI,
+  ECGIs           eCGIs,
+  octetstring     additionalOctets optional
+}with { 
+  variant (lengthIndicator) "LENGTHTO(numberOfECGI,eCGIs,additionalOctets)"; 
+  variant (numberOfECGI) "LENGTHTO(eCGIs)";
+  variant (numberOfECGI) "UNIT(elements)"; 
+  variant "PRESENCE (elementIdentifier = 'BE'O;)";
+}
+
+type set of ECGI ECGIs;
+
+//8.122
+type record RemoteUEContextGrouped
+{
+  OCT1            elementIdentifier,	//dec 191, 'BF'O
+  LIN2_BO_LAST    lengthIndicator,
+  BIT4            instance,
+  BIT4            spare,
+  RemoteUEContextIEs remoteUEContextIEs
+}with { 
+  variant (lengthIndicator) "LENGTHTO(remoteUEContextIEs)"; 
+  variant "PRESENCE (elementIdentifier = 'BF'O;)";
+}
+
+type set RemoteUEContextIEs
+{
+  RemoteUserID          remoteUserID optional,
+  RemoteUEIPInformation remoteUEIPInformation optional
+}
+
+type set of RemoteUEContextGrouped RemoteUEContextGrouped_List;
+
+//8.123
+type record RemoteUserID
+{
+  OCT1            elementIdentifier,	//dec 192, 'C0'O
+  LIN2_BO_LAST    lengthIndicator,
+  BIT4            instance,
+  BIT4            spare,
+  BIT1            mSISDNF,
+  BIT1            iMEIF,
+  BIT6            spare2,
+  LIN1            lengthOfIMSI,
+  hexstring       iMSI,
+  LIN1            lengthOfMSISDN optional,
+  hexstring       mSISDN optional,
+  LIN1            lengthOfIMEI optional,
+  octetstring     iMEI optional,
+  octetstring     additionalOctets optional
+}with { 
+  variant "PRESENCE (elementIdentifier = 'C0'O;)";
+  variant (lengthIndicator) "LENGTHTO(mSISDNF,iMEIF,spare2,lengthOfIMSI,iMSI,lengthOfMSISDN,mSISDN,lengthOfIMEI,iMEI,additionalOctets)"; 
+  variant (lengthOfMSISDN) "PRESENCE(mSISDNF = '1'B)";   
+  variant (mSISDN) "PRESENCE(mSISDNF = '1'B)";   
+  variant (lengthOfIMEI) "PRESENCE(iMEIF = '1'B)";   
+  variant (iMEI) "PRESENCE(iMEIF = '1'B)";   
+  variant (lengthOfIMSI) "LENGTHTO(iMSI)";
+  variant (iMSI) "PADDING(yes)";
+  variant (iMSI) "PADDING_PATTERN('1'B)";
+  variant (lengthOfMSISDN) "LENGTHTO(mSISDN)"; 
+  variant (mSISDN) "PADDING(yes)";
+  variant (mSISDN) "PADDING_PATTERN('1'B)";
+  variant (lengthOfIMEI) "LENGTHTO(iMEI)" ;
+}
+
+//8.124
+type record RemoteUEIPInformation
+{
+  OCT1            elementIdentifier,	//dec 193, 'C1'O
+  LIN2_BO_LAST    lengthIndicator,
+  BIT4            instance,
+  BIT4            spare,
+  octetstring     remoteUEIPInformation
+}with { 
+  variant (lengthIndicator) "LENGTHTO(remoteUEIPInformation)"; 
+  variant "PRESENCE (elementIdentifier = 'C1'O;)";
+}
+
+//8.125
+type record CIoT_OptimizationsSupportIndication
+{
+  OCT1            elementIdentifier,	//dec 194, 'C2'O
+  LIN2_BO_LAST    lengthIndicator,
+  BIT4            instance,
+  BIT4            spare,
+  BIT1            sGNIPDN,
+  BIT1            sCNIPDN,
+  BIT1            aWOPDN,
+  BIT1            iHCSI,
+  BIT4            spare2,
+  octetstring     additionalOctets optional
+}with { 
+  variant (lengthIndicator) "LENGTHTO(sGNIPDN,sCNIPDN,aWOPDN,iHCSI,spare2,additionalOctets)"; 
+  variant "PRESENCE (elementIdentifier = 'C2'O;)";
+}
+
+//8.126
+type record SCEF_PDN_ConnectionGrouped
+{
+  OCT1            elementIdentifier,	//dec 195, 'C3'O
+  LIN2_BO_LAST    lengthIndicator,
+  BIT4            instance,
+  BIT4            spare,
+  SCEF_PDN_ConnectionIEs sCEF_PDN_ConnectionIEs
+}with { 
+  variant (lengthIndicator) "LENGTHTO(sCEF_PDN_ConnectionIEs)"; 
+  variant "PRESENCE (elementIdentifier = 'C3'O;)";
+}
+
+type set SCEF_PDN_ConnectionIEs
+{
+  AccessPointName  accessPointName optional,
+  EPS_BearerID     ePS_BearerID optional,
+  NodeIdentifier   nodeIdentifier optional
+}
+
+type set of SCEF_PDN_ConnectionGrouped SCEF_PDN_ConnectionGrouped_List;
+
+//8.127
+type record HeaderCompressionConfiguration
+{
+  OCT1            elementIdentifier,	//dec 196, 'C4'O
+  LIN2_BO_LAST    lengthIndicator,
+  BIT4            instance,
+  BIT4            spare,
+  OCT2            rOHC_Profiles,
+  LIN2_BO_LAST    maxCID (1..16383),
+  octetstring     additionalOctets optional
+}with { 
+  variant (lengthIndicator) "LENGTHTO(rOHC_Profiles,maxCID,additionalOctets)"; 
+  variant "PRESENCE (elementIdentifier = 'C4'O;)";
+}
+
+//8.128
+type record ExtendedProtocolConfigOptions
+{
+  OCT1            elementIdentifier,	//dec 197, 'C5'O
+  LIN2_BO_LAST    lengthIndicator,
+  BIT4            instance,
+  BIT4            spare,
+  octetstring     ePCO
+}with { 
+  variant (lengthIndicator) "LENGTHTO(ePCO)"; 
+  variant "PRESENCE (elementIdentifier = 'C5'O;)";
+}
+
+//8.129
+type record ServingPLMNRateControl
+{
+  OCT1            elementIdentifier,	//dec 197, 'C6'O
+  LIN2_BO_LAST    lengthIndicator,
+  BIT4            instance,
+  BIT4            spare,
+  LIN2_BO_LAST    uplinkRateLimit,
+  LIN2_BO_LAST    downlinkRateLimit,
+  octetstring     additionalOctets optional
+}with { 
+  variant (lengthIndicator) "LENGTHTO(uplinkRateLimit,downlinkRateLimit,additionalOctets)"; 
+  variant "PRESENCE (elementIdentifier = 'C6'O;)";
+}
+
+//8.130
+type record Counter
+{
+  OCT1            elementIdentifier,	//dec 199, 'C7'O
+  LIN2_BO_LAST    lengthIndicator,
+  BIT4            instance,
+  BIT4            spare,
+  OCT4            timestampValue,
+  OCT1            counterValue,
+  octetstring     additionalOctets optional
+}with { 
+  variant (lengthIndicator) "LENGTHTO(timestampValue,counterValue,additionalOctets)"; 
+  variant "PRESENCE (elementIdentifier = 'C7'O;)";
+}
+
+//8.131
+type record Mapped_UE_UsageType
+{
+  OCT1            elementIdentifier,	//dec 200, 'C8'O
+  LIN2_BO_LAST    lengthIndicator,
+  BIT4            instance,
+  BIT4            spare,
+  OCT2            mapped_UE_UsageType,
+  octetstring     additionalOctets optional
+}with { 
+  variant (lengthIndicator) "LENGTHTO(mapped_UE_UsageType,additionalOctets)"; 
+  variant "PRESENCE (elementIdentifier = 'C8'O;)";
+}
+
+//8.132
+type record Secondary_RAT_UsageDataReport
+{
+  OCT1            elementIdentifier,	//dec 201, 'C9'O
+  LIN2_BO_LAST    lengthIndicator,
+  BIT4            instance,
+  BIT4            spare,
+  BIT1            iRPGW,
+  BIT1            iRSGW,
+  BIT6            spare2,
+  integer         secondaryRATType,
+  BIT4            eBI,
+  BIT4            spare3,
+  OCT4            startTimestamp, 
+  OCT4            endTimestamp,
+  OCT8            usageDataDL,
+  OCT8            usageDataUL,
+  octetstring     additionalOctets optional
+}with { 
+  variant (lengthIndicator) "LENGTHTO(iRPGW,iRSGW,spare2,secondaryRATType,eBI,spare3,
+  startTimestamp,endTimestamp,usageDataDL,usageDataUL,additionalOctets)"; 
+  variant "PRESENCE (elementIdentifier = 'C9'O;)";
+}
+
+type set of  Secondary_RAT_UsageDataReport  Secondary_RAT_UsageDataReport_List;
+
+//8.133
+type record UP_FunctionSelectionIndicationFlags
+{
+  OCT1            elementIdentifier,	//dec 202, 'CA'O
+  LIN2_BO_LAST    lengthIndicator,
+  BIT4            instance,
+  BIT4            spare,
+  BIT1            dCNR,
+  BIT7            spare2,
+  octetstring     additionalOctets optional
+}with { 
+  variant (lengthIndicator) "LENGTHTO(dCNR,spare2,additionalOctets)"; 
+  variant "PRESENCE (elementIdentifier = 'CA'O;)";
+}
+
+// GTPC PDUs
+// Path Management messages
+//7.1.1
+type set EchoRequest
+{
+  Recovery                     recovery,
+  NodeFeatures                 sendingNodeFeatures optional,
+  PrivateExtension_List        privateExtension optional
+};
+
+//7.1.2
+type set EchoResponse
+{
+  Recovery                     recovery,
+  NodeFeatures                 sendingNodeFeatures optional,
+  PrivateExtension_List        privateExtension optional
+};
+
+//7.1.3
+type set VersionNotSupported  
+{};
+
+// Tunnel Management messages
+//7.2.1
+type set CreateSessionRequest
+{
+  IMSI                                    iMSI   optional,
+  MSISDN                                  mSISDN      optional,
+  MEI                                     mEI         optional,
+  UserLocationInfo_List                   userLocationInfo optional,
+  ServingNetwork                          servingNetwork   optional,
+  RAT_Type                                rAT_Type,
+  Indication                              indication optional,
+  FullyQualifiedTEID_List                 fullyQualifiedTEID,  
+  AccessPointName                         accessPointName,
+  SelectionMode                           selectionMode optional,
+  PDN_Type                                pDN_Type optional,
+  PDN_AddressAllocation                   pDN_AddressAllocation optional,
+  APN_Restriction                         maxAPN_Restriction optional,
+  AggregateMaximumBitRate                 ambr optional,
+  EPS_BearerID                            linkedEPS_Bearer_ID optional,
+  TrustedWLANModeIndication               trustedWLANModeIndication optional,
+  ProtocolConfigOptions                   protocolConfigOptions optional, 
+  BearerContextGrouped_List               bearerContextGrouped,  
+  TraceInformation                        traceInformation optional, 
+  Recovery                                recovery optional, 
+  FullyQualifiedPDN_ConnectionSetID_List  csid optional, 
+  UE_TimeZone                             uE_TimeZone optional,
+  User_CSG_Information                    user_CSG_Information optional,
+  ChargingCharacteristics                 chargingCharacteristics optional,
+  LocalDistinguishedName_List             lDN optional,
+  SignallingPriorityIndication            signallingPriorityIndication optional, 
+//  MMBR                                    maxMBR_APN_AMBR optional,
+  IP_Address_List                         iP_Addr optional,
+  PortNumber_List                         portNumber optional,	 
+  APCO                                    aPCO optional,
+  TrustedWLANAccessNetworkIdentifier_List trustedWLANAccessNetworkIdentifier optional,
+  CNOperatorSelectionEntity               cNOperatorSelectionEntity optional,
+  PresenceReportingAreaInformation_List   presenceReportingAreaInformation optional,
+  OverloadControlInformationGrouped_List  overloadControlInformationGrouped optional,
+  MillisecondTimeStamp                    originationTimeStamp optional,
+  IntegerNumber                           maximumWaitTime optional,
+  TWANIdentifierTimestamp                 wLANLocationTimestamp optional,
+  FullyQualifiedContainer                 nBIFOMContainer optional,
+  RemoteUEContextGrouped_List             remoteUEContextGrouped optional,
+  NodeIdentifier_List                     nodeIdentifier optional,            
+  ExtendedProtocolConfigOptions           extendedProtocolConfigOptions optional,
+  ServingPLMNRateControl                  servingPLMNRateControl optional,
+  Counter                                 counter optional,
+  Mapped_UE_UsageType                     mapped_UE_UsageType optional,
+  FullyQualifiedDomainName                fullyQualifiedDomainName optional,
+  Secondary_RAT_UsageDataReport_List      secondary_RAT_UsageDataReport optional,
+  UP_FunctionSelectionIndicationFlags     uP_FunctionSelectionIndicationFlags optional,
+  PrivateExtension_List                   privateExtension optional 
+} with { 
+  variant(userLocationInfo) "REPEATABLE(yes)";
+  variant(fullyQualifiedTEID) "REPEATABLE(yes)";
+  variant(bearerContextGrouped) "REPEATABLE(yes)";
+  variant(csid) "REPEATABLE(yes)"; 
+  variant(lDN) "REPEATABLE(yes)"; 
+  variant(iP_Addr) "REPEATABLE(yes)"; 
+  variant(portNumber) "REPEATABLE(yes)";
+  variant(overloadControlInformationGrouped) "REPEATABLE(yes)";
+  variant(remoteUEContextGrouped) "REPEATABLE(yes)";
+  variant(trustedWLANAccessNetworkIdentifier) "REPEATABLE(yes)";
+  variant(presenceReportingAreaInformation) "REPEATABLE(yes)";
+  variant(secondary_RAT_UsageDataReport) "REPEATABLE(yes)";
+};
+
+
+//7.2.2 
+//6.1.1 - Only the Cause information element, optionally Protocol Configuration Options and optionally the Recovery information element 
+//shall be included in the response if the Cause contains a value indicating that the request is not accepted.
+type set CreateSessionResponse
+{
+  Cause                                   cause,
+  ChangeReportingAction                   changeReportingAction optional, 
+  CSG_InformationReportingAction          cSG_InformationReportingAction optional,
+  HeNBInformationReporting                heNBInformationReporting optional,
+  FullyQualifiedTEID_List                 fullyQualifiedTEID optional,
+  PDN_AddressAllocation                   pDN_AddressAllocation optional,
+  APN_Restriction                         aPN_Restriction optional,  
+  AggregateMaximumBitRate                 ambr optional,
+  EPS_BearerID                            linkedEPS_Bearer_ID optional,
+  ProtocolConfigOptions                   protocolConfigOptions optional, 
+  BearerContextGrouped_List               bearerContextGrouped optional,
+  Recovery                                recovery optional,  
+  FullyQualifiedDomainName                chargingGatewayName optional,
+  IP_Address                              chargingGatewayAddress optional,
+  FullyQualifiedPDN_ConnectionSetID_List  csid optional, 
+  LocalDistinguishedName_List             lDN optional, 
+  EPC_Timer                               pGW_Back_OffTime optional,
+  APCO                                    aPCO optional,
+  IPv4ConfigurationPrameters              trustedWLANIPv4Parameters optional,
+  Indication                              indicationFlags optional,
+  PresenceReportingAreaAction_List        presenceReportingAreaAction optional,
+  LoadControlInformationGrouped_List      loadControlInformationGrouped optional,
+  OverloadControlInformationGrouped_List  overloadControlInformationGrouped optional,
+  FullyQualifiedContainer                 nBIFOMContainer optional,
+  ChargingID                              pDNConnectionChargingID optional,
+  ExtendedProtocolConfigOptions           extendedProtocolConfigOptions optional,
+  PrivateExtension_List                   privateExtension optional
+} with { 
+  variant(fullyQualifiedTEID) "REPEATABLE(yes)";
+  variant(bearerContextGrouped) "REPEATABLE(yes)";
+  variant(csid) "REPEATABLE(yes)";
+  variant(lDN) "REPEATABLE(yes)";    
+  variant(loadControlInformationGrouped) "REPEATABLE(yes)";    
+  variant(presenceReportingAreaAction) "REPEATABLE(yes)";    
+  variant(overloadControlInformationGrouped) "REPEATABLE(yes)";    
+};
+
+//7.2.3
+type set CreateBearerRequest
+{
+  ProcedureTransactionID                  procedureTransactionID optional,
+  EPS_BearerID                            linkedEPS_BearerID,  
+  ProtocolConfigOptions                   protocolConfigOptions optional, 
+  BearerContextGrouped_List               bearerContextGrouped,
+  FullyQualifiedPDN_ConnectionSetID_List  csid optional,  
+  ChangeReportingAction                   changeReportingAction optional,
+  CSG_InformationReportingAction          cSG_InformationReportingAction optional,
+  HeNBInformationReporting		            heNBInformationReporting optional,
+  PresenceReportingAreaAction_List        presenceReportingAreaAction optional,
+  Indication                              indicationFlags optional,
+  LoadControlInformationGrouped_List      loadControlInformationGrouped optional,
+  OverloadControlInformationGrouped_List  overloadControlInformationGrouped optional,
+  FullyQualifiedContainer                 nBIFOMContainer optional,
+  PrivateExtension_List                   privateExtension optional 
+} with {
+  variant(bearerContextGrouped) "REPEATABLE(yes)";
+  variant(csid) "REPEATABLE(yes)";
+  variant(loadControlInformationGrouped) "REPEATABLE(yes)";    
+  variant(presenceReportingAreaAction) "REPEATABLE(yes)";    
+  variant(overloadControlInformationGrouped) "REPEATABLE(yes)";    
+};
+
+//7.2.4
+//6.1.1 - Only the Cause information element, optionally Protocol Configuration Options and optionally the Recovery information element 
+//shall be included in the response if the Cause contains a value indicating that the request is not accepted.
+type set CreateBearerResponse
+{
+  Cause                                   cause,
+  BearerContextGrouped_List               bearerContextGrouped optional,
+  Recovery                                recovery optional,  
+  FullyQualifiedPDN_ConnectionSetID_List  csid optional,
+  ProtocolConfigOptions                   protocolConfigOptions optional,  
+  UE_TimeZone                             uE_TimeZone optional,
+  UserLocationInfo                        uLI optional, 
+  TrustedWLANAccessNetworkIdentifier_List	trustedWLANAccessNetworkIdentifier optional,
+  OverloadControlInformationGrouped_List  overloadControlInformationGrouped optional,
+  PresenceReportingAreaInformation_List   presenceReportingAreaInformation optional,
+  IP_Address_List                         iP_Addr optional,
+  TWANIdentifierTimestamp                 wLANLocationTimestamp optional,
+  PortNumber_List			                    portNumber optional,
+  FullyQualifiedContainer                 nBIFOMContainer optional,
+  ExtendedProtocolConfigOptions           extendedProtocolConfigOptions optional,
+  PrivateExtension_List                   privateExtension optional 
+} with {  
+  variant(bearerContextGrouped) "REPEATABLE(yes)";
+  variant(csid) "REPEATABLE(yes)";
+  variant(overloadControlInformationGrouped) "REPEATABLE(yes)";    
+  variant(iP_Addr) "REPEATABLE(yes)";
+  variant(trustedWLANAccessNetworkIdentifier) "REPEATABLE(yes)";
+  variant(presenceReportingAreaInformation) "REPEATABLE(yes)";
+  variant(portNumber) "REPEATABLE(yes)"    
+};
+
+//7.2.5
+type set BearerResourceCommand
+{
+  EPS_BearerID_List                       epsBearerIdentity,
+  ProcedureTransactionID                  procedureTransactionID,
+  FlowQoS                                 flowQoS optional,
+  TrafficAggregateDescription             tAD optional, 
+  RAT_Type                                rAT_Type optional, 
+  ServingNetwork                          servingNetwork optional,
+  UserLocationInfo                        userLocationInfo optional,
+  // EBI is included in 1st field : EPS_BearerID_List
+  Indication                              indicationFlags optional,
+  FullyQualifiedTEID_List                 fullyQualifiedTEID optional,
+  ProtocolConfigOptions                   protocolConfigOptions optional,
+  SignallingPriorityIndication            signallingPriorityIndication optional, 
+  OverloadControlInformationGrouped_List  overloadControlInformationGrouped optional,
+  FullyQualifiedContainer                 nBIFOMContainer optional,
+  ExtendedProtocolConfigOptions           extendedProtocolConfigOptions optional,
+  PrivateExtension_List                   privateExtension optional 
+} with {  
+  variant(epsBearerIdentity) "REPEATABLE(yes)";
+  variant(fullyQualifiedTEID) "REPEATABLE(yes)";
+  variant(overloadControlInformationGrouped) "REPEATABLE(yes)";    
+};
+
+//7.2.6
+type set BearerResourceFailureIndication
+{
+  Cause                                   cause,
+  EPS_BearerID                            linkedBearerIdentity,
+  ProcedureTransactionID                  procedureTransactionID,
+  Indication                              indicationFlags optional,
+  OverloadControlInformationGrouped_List  overloadControlInformationGrouped optional,
+  Recovery                                recovery optional, 
+  FullyQualifiedContainer                 nBIFOMContainer optional,
+  PrivateExtension_List                   privateExtension optional
+} with {  
+  variant(overloadControlInformationGrouped) "REPEATABLE(yes)";    
+};
+
+//7.2.7
+type set ModifyBearerRequest
+{
+  MEI                                     mEI optional, 
+  UserLocationInfo_List                   userLocationInfo optional,
+  ServingNetwork                          servingNetwork optional, 
+  RAT_Type                                rAT_Type optional, 
+  Indication                              indicationFlags optional, 
+  FullyQualifiedTEID                      fullyQualifiedTEID optional,
+  AggregateMaximumBitRate                 ambr optional,  
+  DelayValue                              delayDownlinkPacketNotificationReq optional,  
+  BearerContextGrouped_List               bearerContextGrouped optional, 
+  Recovery                                recovery optional, 
+  UE_TimeZone                             uE_TimeZone optional, 
+  FullyQualifiedPDN_ConnectionSetID_List  csid optional, 
+  User_CSG_Information                    user_CSG_Information optional,
+  IP_Address_List                         iP_Addr optional,
+  PortNumber_List                         portNumber optional,	 
+  LocalDistinguishedName_List             lDN optional,   
+//  MMBR                                    maxMBR_APN_AMBR optional,
+  CNOperatorSelectionEntity               cNOperatorSelectionEntity optional,
+  PresenceReportingAreaInformation_List   presenceReportingAreaInformation optional,
+  OverloadControlInformationGrouped_List  overloadControlInformationGrouped optional,
+  ServingPLMNRateControl                  servingPLMNRateControl optional,
+  Counter                                 counter optional,
+  IMSI                                    iMSI optional,
+  TrustedWLANAccessNetworkIdentifier      trustedWLANAccessNetworkIdentifier optional,
+  TWANIdentifierTimestamp                 tWANIdentifierTimestamp optional,
+  Secondary_RAT_UsageDataReport_List      secondary_RAT_UsageDataReport optional,
+  PrivateExtension_List                   privateExtension optional
+} with { 
+  variant(userLocationInfo) "REPEATABLE(yes)"; 
+  variant(bearerContextGrouped) "REPEATABLE(yes)"; 
+  variant(csid) "REPEATABLE(yes)";
+  variant(lDN) "REPEATABLE(yes)"; 
+  variant(iP_Addr) "REPEATABLE(yes)";
+  variant(portNumber) "REPEATABLE(yes)";
+  variant(overloadControlInformationGrouped) "REPEATABLE(yes)";
+  variant(presenceReportingAreaInformation) "REPEATABLE(yes)";
+  variant(secondary_RAT_UsageDataReport) "REPEATABLE(yes)";
+};
+
+//7.2.8
+type set ModifyBearerResponse
+{
+  Cause                                   cause,
+  MSISDN                                  mSISDN optional,
+  EPS_BearerID                            linkedEPS_Bearer_ID optional,
+  APN_Restriction                         aPN_Restriction optional,
+  ProtocolConfigOptions                   protocolConfigOptions optional,
+  BearerContextGrouped_List               bearerContextGrouped optional, 
+  ChangeReportingAction                   changeReportingAction optional,
+  CSG_InformationReportingAction          cSG_InformationReportingAction optional,
+  HeNBInformationReporting		  heNBInformationReporting optional,
+  FullyQualifiedDomainName                chargingGatewayName optional,
+  IP_Address                              chargingGatewayAddress optional, 
+  FullyQualifiedPDN_ConnectionSetID_List  csid optional,
+  Recovery                                recovery optional,
+  LocalDistinguishedName_List             lDN optional, 
+  Indication                              indicationFlags optional, 
+  PresenceReportingAreaAction_List        presenceReportingAreaAction optional,
+  LoadControlInformationGrouped_List      loadControlInformationGrouped optional,     
+  OverloadControlInformationGrouped_List  overloadControlInformationGrouped optional,     
+  ChargingID                              pDNConnectionChargingID optional,
+  PrivateExtension_List                   privateExtension optional 
+} with { 
+  variant(bearerContextGrouped) "REPEATABLE(yes)"; 
+  variant(csid) "REPEATABLE(yes)";
+  variant(lDN) "REPEATABLE(yes)";      
+  variant(loadControlInformationGrouped) "REPEATABLE(yes)";
+  variant(presenceReportingAreaAction) "REPEATABLE(yes)";
+  variant(overloadControlInformationGrouped) "REPEATABLE(yes)";
+};
+
+//7.2.9.1
+type set DeleteSessionRequest
+{
+  Cause                                   cause optional,
+  EPS_BearerID                            linkedEPS_Bearer_ID optional, 
+  UserLocationInfo                        uLI optional, 
+  Indication                              indicationFlags optional,
+  ProtocolConfigOptions                   protocolConfigOptions optional, 
+  NodeType                                originatingNode optional, 
+  FullyQualifiedTEID                      fullyQualifiedTEID optional, 
+  UE_TimeZone                             uE_TimeZone optional,
+  UserLocationInformationTimestamp        uLITimestamp optional,
+  RAN_NASCause                            rANNASReleaseCause optional,
+  TrustedWLANAccessNetworkIdentifier_List trustedWLANAccessNetworkIdentifier optional,
+  TWANIdentifierTimestamp_List            tWANIdentifierTimestamp optional,
+  OverloadControlInformationGrouped_List  overloadControlInformationGrouped optional,     
+  IP_Address                              uELocalIP_Addr optional,
+  PortNumber_List                         portNumber optional,
+  ExtendedProtocolConfigOptions           extendedProtocolConfigOptions optional,
+  Secondary_RAT_UsageDataReport_List      secondary_RAT_UsageDataReport optional,
+  PrivateExtension_List                   privateExtension optional
+} with { 
+  variant(overloadControlInformationGrouped) "REPEATABLE(yes)";
+  variant(trustedWLANAccessNetworkIdentifier) "REPEATABLE(yes)";    
+  variant(tWANIdentifierTimestamp) "REPEATABLE(yes)";
+  variant(portNumber) "REPEATABLE(yes)";     
+  variant(secondary_RAT_UsageDataReport) "REPEATABLE(yes)";     
+};
+//7.2.9.2
+type set DeleteBearerRequest
+{
+  EPS_BearerID_List                       epsBearerIdentity optional, //LBI , EBI
+  BearerContextGrouped_List               bearerContextGrouped optional,  
+  ProcedureTransactionID                  procedureTransactionID optional, 
+  ProtocolConfigOptions                   protocolConfigOptions optional, 
+  FullyQualifiedPDN_ConnectionSetID_List  csid optional, 
+  Cause                                   cause optional, 
+  Indication                              indicationFlags optional, 
+  LoadControlInformationGrouped_List      loadControlInformationGrouped optional,     
+  OverloadControlInformationGrouped_List  overloadControlInformationGrouped optional,     
+  FullyQualifiedContainer                 nBIFOMContainer optional,
+  ExtendedProtocolConfigOptions           extendedProtocolConfigOptions optional,
+  PrivateExtension_List                   privateExtension optional
+} with { 
+  variant(epsBearerIdentity) "REPEATABLE(yes)";
+  variant(bearerContextGrouped) "REPEATABLE(yes)";
+  variant(csid) "REPEATABLE(yes)"  
+  variant(loadControlInformationGrouped) "REPEATABLE(yes)";
+  variant(overloadControlInformationGrouped) "REPEATABLE(yes)";
+};
+
+//7.2.10.1
+type set DeleteSessionResponse
+{
+  Cause                                   cause,
+  Recovery                                recovery optional,
+  ProtocolConfigOptions                   protocolConfigOptions optional, 
+  Indication                              indicationFlags optional, 
+  LoadControlInformationGrouped_List      loadControlInformationGrouped optional,     
+  OverloadControlInformationGrouped_List  overloadControlInformationGrouped optional,     
+  ExtendedProtocolConfigOptions           extendedProtocolConfigOptions optional,
+  PrivateExtension_List                   privateExtension optional
+} with { 
+  variant(loadControlInformationGrouped) "REPEATABLE(yes)";
+  variant(overloadControlInformationGrouped) "REPEATABLE(yes)";
+};
+
+//7.2.10.2
+type set DeleteBearerResponse
+{
+  Cause                                   cause,
+  EPS_BearerID                            linkedBearerIdentity optional,
+  BearerContextGrouped_List               bearerContextGrouped optional, 
+  Recovery                                recovery optional,
+  FullyQualifiedPDN_ConnectionSetID_List  csid optional,
+  ProtocolConfigOptions                   protocolConfigOptions optional,  
+  UE_TimeZone                             uE_TimeZone optional,
+  UserLocationInfo                        uLI optional,
+  UserLocationInformationTimestamp        uLITimestamp optional,
+  TrustedWLANAccessNetworkIdentifier      trustedWLANAccessNetworkIdentifier optional,
+  TWANIdentifierTimestamp                 tWANIdentifierTimestamp optional,
+  OverloadControlInformationGrouped_List  overloadControlInformationGrouped optional,     
+  IP_Address_List                         iP_Addr optional,
+  PortNumber_List			  portNumber optional,
+  FullyQualifiedContainer                 nBIFOMContainer optional,
+  Secondary_RAT_UsageDataReport_List      secondary_RAT_UsageDataReport optional,
+  PrivateExtension_List                   privateExtension optional
+} with { 
+  variant(bearerContextGrouped) "REPEATABLE(yes)"; 
+  variant(csid) "REPEATABLE(yes)";
+  variant(overloadControlInformationGrouped) "REPEATABLE(yes)";
+  variant(iP_Addr) "REPEATABLE(yes)";
+  variant(portNumber) "REPEATABLE(yes)"; 
+  variant(secondary_RAT_UsageDataReport) "REPEATABLE(yes)"; 
+};
+
+//7.2.11.1
+type set DownlinkDataNotification
+{
+  Cause                                   cause optional,
+  EPS_BearerID_List                       epsBearerIdentity optional,
+  AllocationRetentionPriority             aRP optional,
+  IMSI                                    iMSI optional,
+  FullyQualifiedTEID                      fullyQualifiedTEID optional,
+  Indication                              indicationFlags optional, 
+  LoadControlInformationGrouped           loadControlInformationGrouped optional,     
+  OverloadControlInformationGrouped       overloadControlInformationGrouped optional,     
+  PagingAndServiceInformation             pagingAndServiceInformation optional,
+  PrivateExtension_List                   privateExtension optional   
+}with { 
+  variant(epsBearerIdentity) "REPEATABLE(yes)";
+}; 
+
+
+//7.2.11.2
+type set DownlinkDataNotificationAcknowledgement
+{
+  Cause                                   cause,
+  DelayValue                              dataNotificationDelay optional,  
+  Recovery                                recovery optional, 
+  Throttling                              dL_LowPriorityTrafficThrottling optional, 
+  IMSI                                    iMSI optional,
+  EPC_Timer                               dLBufferingDuration optional,
+  IntegerNumber                           dLBufferingSuggestedPacketCount optional,
+  PrivateExtension_List                   privateExtension optional
+};
+
+//7.2.11.3
+type set DownlinkDataNotificationFailureIndication
+{
+  Cause                                   cause,
+  NodeType                                originatingNode optional,
+  IMSI                                    iMSI optional, 
+  PrivateExtension_List                   privateExtension optional
+};
+
+//7.2.12
+type set DeleteIndirectDataForwardingTunnelRequest
+{
+  PrivateExtension_List                   privateExtension optional
+};
+
+//7.2.13
+type set DeleteIndirectDataForwardingTunnelResponse
+{
+  Cause                                   cause,
+  Recovery                                recovery optional, 
+  PrivateExtension_List                   privateExtension optional
+}
+
+//7.2.14.1
+type set ModifyBearerCommand
+{
+  AggregateMaximumBitRate                 ambr,   
+  BearerContextGrouped                    bearerContextGrouped,
+  OverloadControlInformationGrouped_List  overloadControlInformationGrouped optional,
+  FullyQualifiedTEID                      fullyQualifiedTEID optional,      
+  PrivateExtension_List                   privateExtension optional 
+}with { 
+  variant(overloadControlInformationGrouped) "REPEATABLE(yes)";
+}; 
+
+//7.2.14.2
+type set ModifyBearerFailureIndication
+{
+  Cause                                   cause,
+  Recovery                                recovery optional, 
+  Indication                              indicationFlags optional, 
+  OverloadControlInformationGrouped_List  overloadControlInformationGrouped optional,     
+  PrivateExtension_List                   privateExtension optional 
+}with { 
+  variant(overloadControlInformationGrouped) "REPEATABLE(yes)";
+}; 
+
+//7.2.15
+type set UpdateBearerRequest
+{
+  BearerContextGrouped_List               bearerContextGrouped, 
+  ProcedureTransactionID                  procedureTransactionID optional, 
+  ProtocolConfigOptions                   protocolConfigOptions optional, 
+  AggregateMaximumBitRate                 apn_ambr, 
+  ChangeReportingAction                   changeReportingAction optional,  
+  CSG_InformationReportingAction          cSG_InformationReportingAction optional,
+  Indication                              indicationFlags optional,
+  HeNBInformationReporting                heNBInformationReporting optional,
+  FullyQualifiedPDN_ConnectionSetID_List  csid optional,
+  PresenceReportingAreaAction_List        presenceReportingAreaAction optional,
+  LoadControlInformationGrouped_List      loadControlInformationGrouped optional,     
+  OverloadControlInformationGrouped_List  overloadControlInformationGrouped optional, 
+  FullyQualifiedContainer                 nBIFOMContainer optional,
+  PrivateExtension_List                   privateExtension optional  
+} with {   
+  variant(bearerContextGrouped) "REPEATABLE(yes)";
+  variant(csid) "REPEATABLE(yes)";     
+  variant(loadControlInformationGrouped) "REPEATABLE(yes)";
+  variant(presenceReportingAreaAction) "REPEATABLE(yes)";
+  variant(overloadControlInformationGrouped) "REPEATABLE(yes)";
+};
+
+//7.2.16
+//6.1.1 - Only the Cause information element, optionally Protocol Configuration Options and optionally the Recovery information element 
+//shall be included in the response if the Cause contains a value indicating that the request is not accepted.
+type set UpdateBearerResponse
+{
+  Cause                                   cause,
+  BearerContextGrouped_List               bearerContextGrouped optional,
+  ProtocolConfigOptions                   protocolConfigOptions optional,
+  Recovery                                recovery optional, 
+  FullyQualifiedPDN_ConnectionSetID_List  csid optional, 
+  Indication                              indicationFlags optional,
+  UE_TimeZone                             uE_TimeZone optional,
+  UserLocationInfo                        uLI optional,
+  TrustedWLANAccessNetworkIdentifier      trustedWLANAccessNetworkIdentifier optional,
+  OverloadControlInformationGrouped_List  overloadControlInformationGrouped optional,     
+  PresenceReportingAreaInformation_List   presenceReportingAreaInformation optional,
+  IP_Address_List                         iP_Addr optional,
+  TWANIdentifierTimestamp                 tWANIdentifierTimestamp optional,
+  PortNumber_List                         portNumber optional,
+  FullyQualifiedContainer                 nBIFOMContainer optional,
+  ExtendedProtocolConfigOptions           extendedProtocolConfigOptions optional,
+  PrivateExtension_List                   privateExtension optional    
+} with {  
+  variant(bearerContextGrouped) "REPEATABLE(yes)";
+  variant(csid) "REPEATABLE(yes)";     
+  variant(overloadControlInformationGrouped) "REPEATABLE(yes)";
+  variant(presenceReportingAreaInformation) "REPEATABLE(yes)";
+  variant(iP_Addr) "REPEATABLE(yes)";
+  variant(portNumber) "REPEATABLE(yes)";      
+};
+
+//7.2.17.1
+type set DeleteBearerCommand
+{
+  BearerContextGrouped_List               bearerContextGrouped,
+  UserLocationInfo                        uli optional,
+  UserLocationInformationTimestamp        uli_timestamp optional,
+  UE_TimeZone                             ue_timezone optional, 
+  OverloadControlInformationGrouped_List  overloadControlInformationGrouped optional,
+  FullyQualifiedTEID                      fullyQualifiedTEID optional,      
+  Secondary_RAT_UsageDataReport_List      secondary_RAT_UsageDataReport optional,
+  PrivateExtension_List                   privateExtension optional 
+} with {  
+  variant(bearerContextGrouped) "REPEATABLE(yes)";
+  variant(overloadControlInformationGrouped) "REPEATABLE(yes)";
+  variant(secondary_RAT_UsageDataReport) "REPEATABLE(yes)";
+};
+
+//7.2.17.2
+type set DeleteBearerFailureIndication
+{
+  Cause                                  cause,
+  BearerContextGrouped_List              bearerContextGrouped, 
+  Recovery                               recovery optional, 
+  Indication                             indicationFlags optional,
+  OverloadControlInformationGrouped_List overloadControlInformationGrouped optional,     
+  PrivateExtension_List                  privateExtension optional 
+} with {   
+  variant(bearerContextGrouped) "REPEATABLE(yes)";   
+  variant(overloadControlInformationGrouped) "REPEATABLE(yes)";
+};
+
+//7.2.18
+type set CreateIndirectDataForwardingTunnelRequest
+{
+  IMSI                                   iMSI optional,
+  MEI                                    mEI optional,  
+  Indication                             indicationFlags optional, 
+  FullyQualifiedTEID                     fullyQualifiedTEID optional,
+  BearerContextGrouped_List              bearerContextGrouped, 
+  Recovery                               recovery optional,   
+  PrivateExtension_List                  privateExtension optional 
+} with {   
+  variant(bearerContextGrouped) "REPEATABLE(yes)";   
+};
+
+//7.2.19
+//6.1.1 - Only the Cause information element, optionally Protocol Configuration Options and optionally the Recovery information element 
+//shall be included in the response if the Cause contains a value indicating that the request is not accepted.
+type set CreateIndirectDataForwardingTunnelResponse
+{
+  Cause                                  cause,
+  FullyQualifiedTEID                     fullyQualifiedTEID optional, 
+  BearerContextGrouped_List              bearerContextGrouped optional,
+  Recovery                               recovery optional,    
+  PrivateExtension_List                  privateExtension optional 
+} with {   
+  variant(bearerContextGrouped) "REPEATABLE(yes)";   
+};
+
+//7.2.20
+// VOID
+
+//7.2.21
+type set ReleaseAccessBearersRequest
+{
+  EPS_BearerID_List                      listOfRABs optional,
+  NodeType                               originatingNode optional,
+  Indication                             indicationFlags optional,
+  Secondary_RAT_UsageDataReport_List     secondary_RAT_UsageDataReport optional,
+  PrivateExtension_List                  privateExtension optional   
+} with { 
+  variant(listOfRABs) "REPEATABLE(yes)";
+  variant(secondary_RAT_UsageDataReport) "REPEATABLE(yes)";
+};
+
+//7.2.22
+type set ReleaseAccessBearersResponse
+{
+  Cause                                 cause,
+  Recovery                              recovery optional, 
+  Indication                            indicationFlags optional,
+  LoadControlInformationGrouped         loadControlInformationGrouped optional,     
+  OverloadControlInformationGrouped     overloadControlInformationGrouped optional,     
+  PrivateExtension_List                 privateExtension optional  
+}
+
+//7.2.23
+type set StopPagingIndication
+{
+  IMSI                                   iMSI optional,
+  PrivateExtension_List                  privateExtension optional
+}
+
+//7.2.24
+type set ModifyAccessBearersRequest
+{
+  Indication                             indicationFlags optional, 
+  FullyQualifiedTEID                     fullyQualifiedTEID optional, 
+  DelayValue                             delayDownlinkPacketNotifReq optional,
+  BearerContextGrouped_List              bearerContextGrouped optional,
+  Recovery                               recovery optional,    
+  Secondary_RAT_UsageDataReport_List     secondary_RAT_UsageDataReport optional,
+  PrivateExtension_List                  privateExtension optional 
+} with {   
+  variant(bearerContextGrouped) "REPEATABLE(yes)";   
+  variant(secondary_RAT_UsageDataReport) "REPEATABLE(yes)";   
+};
+
+
+//7.2.25
+type set ModifyAccessBearersResponse
+{
+  Cause                                 cause,
+  BearerContextGrouped_List             bearerContextGrouped optional,
+  Recovery                              recovery optional,    
+  Indication                            indicationFlags optional,
+  LoadControlInformationGrouped         loadControlInformationGrouped optional,     
+  OverloadControlInformationGrouped     overloadControlInformationGrouped optional,     
+  PrivateExtension_List                 privateExtension optional  
+} with {   
+  variant(bearerContextGrouped) "REPEATABLE(yes)";   
+};
+
+
+//7.2.26
+type set RemoteUEReportNotification
+{
+  RemoteUEContextGrouped_List           remoteUEContextGrouped optional,
+  PrivateExtension_List                 privateExtension optional  
+} with {   
+  variant(remoteUEContextGrouped) "REPEATABLE(yes)";   
+};
+
+//7.2.27
+type set RemoteUEReportAcknowledge
+{
+  Cause                                 cause,
+  PrivateExtension_List                 privateExtension optional  
+};
+
+// Mobility Management messages
+//7.3.1
+type set ForwardRelocationRequest
+{
+  IMSI                                 iMSI optional,
+  FullyQualifiedTEID_List              fullyQualifiedTEID,
+  PDN_ConnectionGrouped_List           pDN_Connection optional,
+  FullyQualifiedDomainName_List        nodeName optional,
+  MM_Context                           mM_Context,
+  Indication                           indication optional,
+  FullyQualifiedContainer_List         containers optional,
+  TargetIdentification                 targetIdentification optional,
+  IP_Address_List                      iP_Addr optional,
+  FullyQualifiedCause_List             cause optional,
+  SourceIdentification                 sourceIdentification optional,
+  PLMN_ID                              selected_PLMN_ID optional,
+  Recovery                             recovery optional, 
+  TraceInformation                     traceInformation optional,
+  RFSP_Index_List                      rFSP_Index optional, 
+  CSG_ID                               cSG_ID optional,
+  CSG_MembershipIndication             cSG_MembershipIndication optional,
+  UE_TimeZone                          uE_TimeZone      optional,
+  ServingNetwork                       servingNetwork optional,
+  LocalDistinguishedName               lDN optional,
+  AdditionalMMContextForSRVCC          additionalMMContextForSRVCC optional,
+  AdditionalFlagsForSRVCC              additionalFlagsForSRVCC optional,
+  STN_SR                               sTN_SR optional,
+  MSISDN_List                          mSISDN optional,
+  MDT_Configuration                    mDT_Configuration optional,
+  User_CSG_Information                 user_CSG_Information optional,
+  MonitoringEventInformation           monitoringEventInformation optional,
+  IntegerNumber                        uEUsageType optional,
+  SCEF_PDN_ConnectionGrouped_List      mME_UE_SCEF_PDN_Connection optional,
+  PortNumber                           sourceUDPPortNumber optional,
+  ServingPLMNRateControl               servingPLMNRateControl optional,
+  PrivateExtension_List                privateExtension optional
+} with {      
+  variant(fullyQualifiedTEID) "REPEATABLE(yes)";
+  variant(pDN_Connection) "REPEATABLE(yes)";
+  variant(containers) "REPEATABLE(yes)"; 
+  variant(iP_Addr) "REPEATABLE(yes)"; 
+  variant(cause) "REPEATABLE(yes)"; 
+  variant(rFSP_Index) "REPEATABLE(yes)";
+  variant(nodeName) "REPEATABLE(yes)"; 
+  variant(mSISDN) "REPEATABLE(yes)"; 
+  variant(mME_UE_SCEF_PDN_Connection) "REPEATABLE(yes)"; 
+}
+
+//7.3.2
+type set ForwardRelocationResponse
+{
+  Cause                                cause,
+  FullyQualifiedTEID                   fullyQualifiedTEID optional,
+  Indication                           indication optional,
+  BearerContextGrouped_List            bearerContextGrouped optional, 
+  FullyQualifiedCause_List             fullyQualifiedCause optional, 
+  FullyQualifiedContainer_List         transparentContainer optional,
+  LocalDistinguishedName               lDN optional,
+  FullyQualifiedDomainName_List	       nodeName optional,
+  NodeNumber_List                      nodeNumber optional,
+  NodeIdentifier_List                  nodeIdentifier optional,
+  PrivateExtension_List                privateExtension optional
+} with {   
+  variant(bearerContextGrouped) "REPEATABLE(yes)"; 
+  variant(fullyQualifiedCause) "REPEATABLE(yes)";       
+  variant(transparentContainer) "REPEATABLE(yes)";      
+  variant(nodeName) "REPEATABLE(yes)";   
+  variant(nodeIdentifier) "REPEATABLE(yes)";   
+  variant(nodeNumber) "REPEATABLE(yes)";   
+};
+
+//7.3.3
+type set ForwardRelocationCompleteNotification
+{
+  Indication                           indication optional,
+  PrivateExtension_List                privateExtension optional
+};
+
+//7.3.4
+type set ForwardRelocationCompleteAcknowledge
+{
+  Cause                                cause,
+  Recovery                             recovery optional, 
+  Secondary_RAT_UsageDataReport_List   secondary_RAT_UsageDataReport optional,
+  PrivateExtension_List                privateExtension optional
+} with {   
+  variant(secondary_RAT_UsageDataReport) "REPEATABLE(yes)";   
+};
+
+//7.3.5
+type set ContextRequest
+{
+  IMSI                                 iMSI optional,
+  GUTI                                 gUTI optional,
+  UserLocationInfo                     uLI optional,
+  Packet_TMSI                          pTMSI optional,
+  P_TMSI_Signature                     pTMSI_Signature optional,
+  CompleteRequestMessage               complete_TAU_RequestMessage optional,
+  FullyQualifiedTEID                   address_and_TEID_for_ControlPlane optional,
+  PortNumber                           portNumber optional,
+  RAT_Type                             rAT_Type optional, 
+  Indication                           indication optional,
+  Hop_Counter                          hop_Counter optional,
+  ServingNetwork                       target_PLMN_ID optional,
+  LocalDistinguishedName               lDN optional,
+  FullyQualifiedDomainName_List	       nodeName optional,
+  NodeNumber                           sGSNNumber optional,
+  NodeIdentifier_List                  nodeIdentifier optional,
+  CIoT_OptimizationsSupportIndication  cIoT_OptimizationsSupportIndication optional,
+  PrivateExtension_List                privateExtension optional  
+} with {   
+  variant(nodeName) "REPEATABLE(yes)"; 
+  variant(nodeIdentifier) "REPEATABLE(yes)";   
+}; 
+
+//7.3.6
+type set ContextResponse
+{
+  Cause                                cause,
+  IMSI                                 iMSI optional,
+  MM_Context                           mM_Context optional,
+  PDN_ConnectionGrouped_List           pDN_Connection optional,
+  FullyQualifiedTEID_List              fullyQualifiedTEID optional,
+  FullyQualifiedDomainName_List        nodeName optional,
+  Indication                           indication optional,
+  TraceInformation                     traceInformation optional,
+  IP_Address_List                      iP_Addr optional,
+  RFSP_Index_List                      rFSP_Index optional,               
+  UE_TimeZone                          uE_TimeZone optional,
+  LocalDistinguishedName               lDN optional,
+  MDT_Configuration                    mDT_Configuration optional,
+  User_CSG_Information                 user_CSG_Information optional,
+  MonitoringEventInformation           monitoringEventInformation optional,
+  IntegerNumber                        uEUsageType optional,
+  SCEF_PDN_ConnectionGrouped_List      mME_US_SCEF_PDN_Connection optional,
+  RAT_Type                             rAT_Type optional,
+  ServingPLMNRateControl               servingPLMNRateControl optional,
+  Counter                              counter optional,
+  PrivateExtension_List                privateExtension optional 
+}with {    
+  variant(pDN_Connection) "REPEATABLE(yes)";
+  variant(fullyQualifiedTEID) "REPEATABLE(yes)";
+  variant(iP_Addr) "REPEATABLE(yes)";
+  variant(rFSP_Index) "REPEATABLE(yes)";    
+  variant(nodeName) "REPEATABLE(yes)";     
+  variant(mME_US_SCEF_PDN_Connection) "REPEATABLE(yes)";     
+};
+
+//7.3.7
+type set ContextAcknowledge
+{
+  Cause                                cause,
+  Indication                           indication optional,  //SGW change ind, israi
+  FullyQualifiedTEID                   fullyQualifiedTEID optional,
+  BearerContextGrouped_List            bearerContextGrouped optional, 
+  NodeNumber_List                      nodeNumber optional,
+  NodeIdentifier_List                  nodeIdentifier optional,
+  PrivateExtension_List                privateExtension optional
+}with {    
+  variant(bearerContextGrouped) "REPEATABLE(yes)";     
+  variant(nodeNumber) "REPEATABLE(yes)";     
+  variant(nodeIdentifier) "REPEATABLE(yes)";     
+};
+
+//7.3.8
+type set IdentificationRequest
+{
+  GUTI                                 gUTI optional,
+  UserLocationInfo                     uLI optional,
+  Packet_TMSI                          pTMSI optional,
+  P_TMSI_Signature                     pTMSI_Signature optional,
+  CompleteRequestMessage               complete_AttachRequestMessage optional, 
+  IP_Address                           addressForControlPlane optional,
+  PortNumber                 	       portNumber optional,
+  Hop_Counter                          hop_Counter optional,
+  ServingNetwork                       target_PLMN_ID optional, 
+  PrivateExtension_List                privateExtension optional
+};
+
+//7.3.9
+type set IdentificationResponse
+{
+  Cause                                cause,
+  IMSI                                 iMSI optional,
+  MM_Context                           mM_Context optional,
+  TraceInformation                     traceInformation optional,
+  IntegerNumber                        uEUsageType optional,
+  MonitoringEventInformation           monitoringEventInformation optional,
+  PrivateExtension_List                privateExtension optional
+};
+
+//7.3.10
+type set ForwardAccessContextNotification
+{
+  RAB_Context_List                     rAB_Contexts optional,      
+  Source_RNC_PDCP_Context_Info         source_RNC_PDCP_Context_Info optional,    
+  PDU_Numbers                          pDU_Numbers optional,
+  FullyQualifiedContainer              eUTRAN_TransparentContainer optional,
+  PrivateExtension_List                privateExtension optional
+}with {    
+  variant(rAB_Contexts) "REPEATABLE(yes)";    
+};
+
+
+//7.3.11
+type set ForwardAccessContextAcknowledge
+{
+  Cause                                cause,
+  PrivateExtension_List                privateExtension optional 
+}
+
+//7.3.12
+type set DetachNotification
+{
+  Cause                               cause,
+  DetachType                          detachType optional,
+  PrivateExtension_List               privateExtension optional
+}
+
+//7.3.13
+type set DetachAcknowledge
+{
+  Cause                               cause,
+  Recovery                            recovery optional, 
+  PrivateExtension_List               privateExtension optional
+};
+
+//7.3.14
+type set ChangeNotificationRequest
+{
+  IMSI                                iMSI optional,
+  MEI                                 mEI optional,  
+  Indication                          indication optional,
+  RAT_Type                            rAT_Type, 
+  UserLocationInfo                    uLI optional, 
+  User_CSG_Information                user_CSG_Information optional,
+  IP_Address                          gTPC_IP_Address optional,
+  EPS_BearerID                        linkedBearerIdentity optional,
+  PresenceReportingAreaInformation_List presenceReportingAreaInformation optional,
+  Counter                             counter optional,
+  Secondary_RAT_UsageDataReport_List  secondary_RAT_UsageDataReport optional,
+  PrivateExtension_List               privateExtension optional
+}with {    
+  variant(presenceReportingAreaInformation) "REPEATABLE(yes)";    
+  variant(secondary_RAT_UsageDataReport) "REPEATABLE(yes)";    
+};
+
+//7.3.15
+//6.1.1 - Only the Cause information element, optionally Protocol Configuration Options and optionally the Recovery information element 
+//shall be included in the response if the Cause contains a value indicating that the request is not accepted.
+type set ChangeNotificationResponse
+{
+  IMSI                                iMSI optional,
+  MEI                                 mEI optional,  
+  Cause                               cause,
+  ChangeReportingAction               changeReportingAction optional,  
+  CSG_InformationReportingAction      cSG_InformationReportingAction optional,
+  PresenceReportingAreaAction_List    presenceReportingAreaAction optional,
+  PrivateExtension_List               privateExtension optional
+}with {    
+  variant(presenceReportingAreaAction) "REPEATABLE(yes)";    
+};
+
+//7.3.16
+type set RelocationCancelRequest
+{
+  IMSI                                iMSI optional,
+  MEI                                 mEI optional,   
+  Indication                          indication optional, 
+  FullyQualifiedCause                 ranapCause optional,
+  PrivateExtension_List               privateExtension optional
+};
+
+//7.3.17
+type set RelocationCancelResponse
+{
+  Cause                               cause,
+  PrivateExtension_List               privateExtension optional
+};
+
+//7.3.18
+type set ConfigurationTransferTunnel
+{
+  FullyQualifiedContainer              eUTRAN_TransparentContainer, 
+  TargetIdentification                 targetENB_ID
+}
+
+//7.3.19
+type set RAN_InformationRelay
+{
+  FullyQualifiedContainer              bSS_Container,
+  TargetIdentification                 rIM_RoutingAddress optional,
+  PrivateExtension_List                privateExtension optional
+}
+
+//7.3.20
+type set ISR_StatusIndication
+{
+  ActionIndication                    actionIndication,
+  PrivateExtension_List               privateExtension optional 
+}
+
+//7.3.21
+type set UE_RegistrationQueryRequest
+{
+  IMSI                                iMSI,
+  PrivateExtension_List               privateExtension optional 
+}
+
+//7.3.22
+type set UE_RegistrationQueryResponse
+{
+  Cause                               cause,
+  IMSI                                iMSI,
+  PLMN_ID                             selectedCoreNetworkOperatorIdenifier,
+  PrivateExtension_List               privateExtension optional 
+}
+
+//7.4 Fallback Related messages
+
+//7.4.1
+type set SuspendNotification
+{
+  IMSI                                iMSI optional,
+  UserLocationInfo                    uLI optional,                
+  EPS_BearerID                        linkedEPS_BearerID optional,
+  Packet_TMSI                         pTMSI optional,
+  NodeType                            originatingNode optional,
+  IP_Address                          addressForControlPlane optional,
+  PortNumber                          uDPSourcePortNumber optional,
+  Hop_Counter                         hopCounter optional,
+  FullyQualifiedTEID                  senderF_TEIDForControlPlane optional,
+  PrivateExtension_List               privateExtension optional
+};
+
+//7.4.2
+type set SuspendAcknowledge
+{
+  Cause                               cause,
+  PrivateExtension_List               privateExtension optional
+};
+
+//7.4.3
+type set ResumeNotification
+{
+  IMSI                                iMSI,
+  EPS_BearerID                        linkedEPS_BearerID optional,
+  NodeType                            originatingNode optional,
+  FullyQualifiedTEID                  senderF_TEIDForControlPlane optional,
+  PrivateExtension_List               privateExtension optional
+};
+
+//7.4.4 
+type set ResumeAcknowledge
+{
+  Cause                               cause,
+  PrivateExtension_List               privateExtension optional
+};
+
+//7.4.5
+type set CSPagingIndication
+{
+  IMSI                                iMSI,
+  FullyQualifiedDomainName            vLR_Name,
+  TMSI                                tMSI optional,
+  UserLocationInfo                    locationAreaIdentifier optional,
+  GlobalCN_ID                         globalCN_ID optional, 
+  ChannelNeeded                       channelNeeded optional,
+  EMLPP_Priority                      eMLPP_Priority optional,
+  ServiceIndicator                    serviceIndicator optional,
+  PrivateExtension_List               privateExtension optional
+}; 
+
+//7.4.6
+type set AlertMMENotification
+{
+  PrivateExtension_List               privateExtension optional
+};
+
+//7.4.7 
+type set AlertMMEAcknowledge
+{
+  Cause                               cause,
+  PrivateExtension_List               privateExtension optional
+};
+
+//7.4.8
+type set UEActivityNotification
+{
+  PrivateExtension_List               privateExtension optional
+};
+
+//7.4.9 
+type set UEActivityAcknowledge
+{
+  Cause                               cause,
+  PrivateExtension_List               privateExtension optional
+};
+
+//Non-3GPP access related messages
+//7.5.1
+type set CreateForwardingTunnelRequest
+{
+  S103_PDF_List                       s103_PDF,
+  PrivateExtension_List               privateExtension optional
+} with {    
+  variant(s103_PDF) "REPEATABLE(yes)";    
+};
+
+//7.5.2   
+type set CreateForwardingTunnelResponse
+{
+  Cause                               cause,
+  S1_UDF_List                         s1_UDF optional,
+  PrivateExtension_List               privateExtension optional
+} with {    
+  variant(s1_UDF) "REPEATABLE(yes)";    
+}; 
+
+//Restoration and recovery
+//7.9.1
+type set DeletePDN_ConnectionSetRequest
+{
+  FullyQualifiedPDN_ConnectionSetID_List  csid optional, //MME, SGW, PGW, ePDG, TWAN
+  PrivateExtension_List                   privateExtension optional 
+} with {    
+  variant(csid) "REPEATABLE(yes)";     
+};
+
+//7.9.2
+type set DeletePDN_ConnectionSetResponse
+{
+  Cause                               cause,
+  PrivateExtension_List               privateExtension optional
+}
+
+//7.9.3
+type set UpdatePDN_ConnectionSetRequest
+{
+  FullyQualifiedPDN_ConnectionSetID_List  csid optional, //MME, SGW
+  PrivateExtension_List                   privateExtension optional
+} with {    
+  variant(csid) "REPEATABLE(yes)";     
+};
+
+
+//7.9.4
+type set UpdatePDN_ConnectionSetResponse
+{
+  Cause                               cause,
+  FullyQualifiedPDN_ConnectionSetID   csid optional, //PGW
+  PrivateExtension_List               privateExtension optional
+}
+
+//7.9.5
+type set PGW_RestartNotification
+{
+  IP_Address_List                        iP_Addr,//PGW, SGW
+  Cause					 cause optional,
+  PrivateExtension_List                  privateExtension optional
+}
+with {    
+  variant(iP_Addr) "REPEATABLE(yes)"; 
+};
+
+//7.9.6
+type set PGW_RestartNotificationAcknowledge
+{
+  Cause                               cause,
+  PrivateExtension_List               privateExtension optional
+}
+
+//7.9.7
+type set PGW_DownlinkTriggeringNotification
+{
+  IMSI                                iMSI,
+  IP_Address			      mME_S4_SGSN_Identifier optional,
+  FullyQualifiedTEID                  senderF_TEIDForControlPlane optional,
+  PrivateExtension_List               privateExtension optional
+}
+
+//7.9.8
+type set PGW_DownlinkTriggeringAcknowledge
+{
+  Cause				      cause,
+  IMSI                                iMSI optional,
+  IP_Address			      mME_S4_SGSN_Identifier optional,
+  PrivateExtension_List               privateExtension optional
+}
+
+
+// Trace Management Messages
+//7.12.1 
+type set TraceSessionActivation
+{
+  IMSI                                iMSI optional,
+  TraceInformation                    traceInformation,
+  MEI                                 mEI optional
+}
+
+//7.12.2
+type set TraceSessionDeactivation
+{
+  TraceReference                      traceReference
+}
+
+
+// MBMS Messages
+//7.13.1
+type set MBMSSessionStartRequest
+{
+  FullyQualifiedTEID                  fullyQualifiedTEID,
+  TMGI                                tMGI,
+  MBMS_SessionDuration                mBMS_SessionDuration,
+  MBMS_ServiceArea                    mBMS_ServiceArea,
+  MBMS_SessionIdentifier              mBMS_SessionIdentifier optional,
+  MBMS_FlowIdentifier                 mBMS_FlowIdentifier optional,
+  Bearer_QoS                          QoS_Profile,
+  MBMS_IPMulticastDistribution_List   mBMS_IPMulticastDistribution,
+  Recovery                            recovery optional,
+  MBMSTimetoDataTransfer              mBMSTimetoDataTransfer optional,
+  AbsoluteTimeofMBMSDataTransfer      mBMS_Data_Transfer_Start optional,
+  MBMSFlags                           mBMSFlags optional,
+  ECGI_List                           mBMSCellList optional,
+  PrivateExtension_List               privateExtension optional
+} with {    
+  variant(mBMS_IPMulticastDistribution) "REPEATABLE(yes)";     
+};
+
+//7.13.2
+type set MBMSSessionStartResponse
+{
+  Cause                               cause,
+  FullyQualifiedTEID_List             fullyQualifiedTEID optional,
+  MBMS_DistributionAcknowledge        mBMS_DistributionAcknowledge optional,
+  Recovery                            recovery optional,
+  PrivateExtension_List               privateExtension optional
+} with { 
+  variant(fullyQualifiedTEID) "REPEATABLE(yes)"; 
+};
+
+//7.13.3
+type set MBMSSessionUpdateRequest
+{
+  MBMS_ServiceArea                    mBMS_ServiceArea optional,
+  TMGI                                tMGI,
+  FullyQualifiedTEID                  fullyQualifiedTEID optional,
+  MBMS_SessionDuration                mBMS_SessionDuration,
+  Bearer_QoS                          QoS_Profile,
+  MBMS_SessionIdentifier              mBMS_SessionIdentifier optional,
+  MBMS_FlowIdentifier                 mBMS_FlowIdentifier optional,
+  MBMSTimetoDataTransfer              mBMSTimetoDataTransfer optional,
+  AbsoluteTimeofMBMSDataTransfer      mBMS_Data_Transfer_StartUpdateStop optional,  
+  ECGI_List                           mBMSCellList optional,
+  PrivateExtension_List               privateExtension optional
+}
+
+//7.13.4
+type set MBMSSessionUpdateResponse
+{
+  Cause                               cause,
+  MBMS_DistributionAcknowledge        mBMS_DistributionAcknowledge optional,
+  FullyQualifiedTEID                  fullyQualifiedTEID optional,
+  Recovery                            recovery optional,
+  PrivateExtension_List               privateExtension optional
+}
+
+//7.13.5
+type set MBMSSessionStopRequest
+{
+  MBMS_FlowIdentifier                 mBMS_FlowIdentifier optional,
+  AbsoluteTimeofMBMSDataTransfer      mBMS_Data_Transfer_Stop optional,   
+  PrivateExtension_List               privateExtension optional
+}
+
+//7.13.6
+type set MBMSSessionStopResponse
+{
+  Cause                               cause,
+  Recovery                            recovery optional, 
+  PrivateExtension_List               privateExtension optional
+}
+
+
+type union GTPCv2_PDUs {
+  EchoRequest                                  echoRequest,
+  EchoResponse                                 echoResponse,
+  VersionNotSupported                          versionNotSupported,
+  CreateSessionRequest                         createSessionRequest, 
+  CreateSessionResponse                        createSessionResponse,
+  CreateBearerRequest                          createBearerRequest,
+  CreateBearerResponse                         createBearerResponse,
+  BearerResourceCommand                        bearerResourceCommand,
+  BearerResourceFailureIndication              bearerResourceFailureIndication,
+  ModifyBearerRequest                          modifyBearerRequest,
+  ModifyBearerResponse                         modifyBearerResponse,
+  DeleteSessionRequest                         deleteSessionRequest,   
+  DeleteBearerRequest                          deleteBearerRequest,
+  DeleteSessionResponse                        deleteSessionResponse,
+  DeleteBearerResponse                         deleteBearerResponse,
+  DownlinkDataNotification                     downlinkDataNotification,
+  DownlinkDataNotificationAcknowledgement      downlinkDataNotificationAcknowledgement,
+  DownlinkDataNotificationFailureIndication    downlinkDataNotificationFailureIndication,
+  DeleteIndirectDataForwardingTunnelRequest    deleteIndirectDataForwardingTunnelRequest,
+  DeleteIndirectDataForwardingTunnelResponse   deleteIndirectDataForwardingTunnelResponse,
+  ModifyBearerCommand                          modifyBearerCommand,
+  ModifyBearerFailureIndication                modifyBearerFailureIndication,
+  UpdateBearerRequest                          updateBearerRequest,
+  UpdateBearerResponse                         updateBearerResponse,
+  DeleteBearerCommand                          deleteBearerCommand,
+  DeleteBearerFailureIndication                deleteBearerFailureIndication,  
+  CreateIndirectDataForwardingTunnelRequest    createIndirectDataForwardingTunnelRequest,
+  CreateIndirectDataForwardingTunnelResponse   createIndirectDataForwardingTunnelResponse,
+  ReleaseAccessBearersRequest                  releaseAccessBearersRequest,
+  ReleaseAccessBearersResponse                 releaseAccessBearersResponse,
+  StopPagingIndication                         stopPagingIndication,
+  ModifyAccessBearersRequest                   modifyAccessBearersRequest,
+  ModifyAccessBearersResponse                  modifyAccessBearersResponse,
+  RemoteUEReportNotification                   remoteUEReportNotification,
+  RemoteUEReportAcknowledge                    remoteUEReportAcknowledge,
+  ForwardRelocationRequest                     forwardRelocationRequest,
+  ForwardRelocationResponse                    forwardRelocationResponse,
+  ForwardRelocationCompleteNotification        forwardRelocationCompleteNotification,
+  ForwardRelocationCompleteAcknowledge         forwardRelocationCompleteAcknowledge,
+  ContextRequest                               contextRequest,
+  ContextResponse                              contextResponse,
+  ContextAcknowledge                           contextAcknowledge, 
+  IdentificationRequest                        identificationRequest,
+  IdentificationResponse                       identificationResponse,
+  ForwardAccessContextNotification             forwardAccessContextNotification,
+  ForwardAccessContextAcknowledge              forwardAccessContextAcknowledge,
+  DetachNotification                           detachNotification,
+  DetachAcknowledge                            detachAcknowledge,
+  ChangeNotificationRequest                    changeNotificationRequest,
+  ChangeNotificationResponse                   changeNotificationResponse,
+  RelocationCancelRequest                      relocationCancelRequest,
+  RelocationCancelResponse                     relocationCancelResponse,
+  ConfigurationTransferTunnel                  configurationTransferTunnel,
+  RAN_InformationRelay                         rAN_InformationRelay,
+  SuspendNotification                          suspendNotification,
+  SuspendAcknowledge                           suspendAcknowledge,
+  ResumeNotification                           resumeNotification,
+  ResumeAcknowledge                            resumeAcknowledge,
+  CSPagingIndication                           cSPagingIndication,
+  CreateForwardingTunnelRequest                createForwardingTunnelRequest,
+  CreateForwardingTunnelResponse               createForwardingTunnelResponse,
+  DeletePDN_ConnectionSetRequest               deletePDN_ConnectionSetRequest,
+  DeletePDN_ConnectionSetResponse              deletePDN_ConnectionSetResponse,
+  TraceSessionActivation                       traceSessionActivation,
+  TraceSessionDeactivation                     traceSessionDeactivation,
+  UpdatePDN_ConnectionSetRequest               updatePDN_ConnectionSetRequest,
+  UpdatePDN_ConnectionSetResponse              updatePDN_ConnectionSetResponse,
+  PGW_RestartNotification                      pGW_RestartNotification,
+  PGW_RestartNotificationAcknowledge           pGW_RestartNotificationAcknowledge,
+  PGW_DownlinkTriggeringNotification           pGW_DownlinkTriggeringNotification,
+  PGW_DownlinkTriggeringAcknowledge            pGW_DownlinkTriggeringAcknowledge,
+  AlertMMENotification                         alertMMENotification,
+  AlertMMEAcknowledge                          alertMMEAcknowledge,
+  UEActivityNotification                       uEActivityNotification,
+  UEActivityAcknowledge                        uEActivityAcknowledge,
+  MBMSSessionStartRequest                      mBMSSessionStartRequest,
+  MBMSSessionStartResponse                     mBMSSessionStartResponse,
+  MBMSSessionUpdateRequest                     mBMSSessionUpdateRequest,
+  MBMSSessionUpdateResponse                    mBMSSessionUpdateResponse,
+  MBMSSessionStopRequest                       mBMSSessionStopRequest,
+  MBMSSessionStopResponse                      mBMSSessionStopResponse,
+  ISR_StatusIndication                         iSR_StatusIndication,
+  UE_RegistrationQueryRequest                  uE_RegistrationQueryRequest,
+  UE_RegistrationQueryResponse                 uE_RegistrationQueryResponse
+}
+
+// TOP LEVEL GTPC PDU
+type record PDU_GTPCv2
+{
+  BIT2                           spare,   //0 
+  BIT1                           mp_Bit_or_Spare,
+  BIT1                           t_Bit,
+  BIT1                           p_Bit,
+  BIT3                           version,  //'010'B
+  OCT1                           messageType,
+  LIN2_BO_LAST                   lengthf, 
+  OCT4                           tEID optional,
+  OCT3                           sequenceNumber,
+  BIT4                           spare3, // 0
+  BIT4                           messagePriorityOrSpare, //any value between 0 and 15
+  GTPCv2_PDUs                    gtpcv2_pdu,
+  PDU_GTPCv2                     piggybackPDU_GTPCv2 optional
+}  with { 
+  variant (tEID) "PRESENCE(t_Bit = '1'B)";
+  variant (piggybackPDU_GTPCv2) "PRESENCE(p_Bit = '1'B)";   
+  variant (lengthf) "LENGTHTO(tEID,sequenceNumber,spare3,messagePriorityOrSpare,gtpcv2_pdu)";
+  variant (gtpcv2_pdu) "CROSSTAG( 
+  echoRequest,                                       messageType = '01'O; 
+  echoResponse,                                      messageType = '02'O; 
+  versionNotSupported,                               messageType = '03'O; 
+  createSessionRequest,                              messageType = '20'O;  //32 
+  createSessionResponse,                             messageType = '21'O;  //33  
+  createBearerRequest,                               messageType = '5F'O;  //95 
+  createBearerResponse,                              messageType = '60'O;  //96 
+  bearerResourceCommand,                             messageType = '44'O;  //68 
+  bearerResourceFailureIndication,                   messageType = '45'O;  //69 
+  modifyBearerRequest,                               messageType = '22'O;  //34
+  modifyBearerResponse,                              messageType = '23'O;  //35
+  deleteSessionRequest,                              messageType = '24'O;  //36    
+  deleteBearerRequest,                               messageType = '63'O;  //99
+  deleteSessionResponse,                             messageType = '25'O;  //37 
+  deleteBearerResponse,                              messageType = '64'O;  //100 
+  downlinkDataNotification,                          messageType = 'B0'O;  //176
+  downlinkDataNotificationAcknowledgement,           messageType = 'B1'O;  //177 
+  downlinkDataNotificationFailureIndication,         messageType = '46'O;  //70 
+  deleteIndirectDataForwardingTunnelRequest,         messageType = 'A8'O;  //168 
+  deleteIndirectDataForwardingTunnelResponse,        messageType = 'A9'O;  //169  
+  modifyBearerCommand,                               messageType = '40'O;  //64
+  modifyBearerFailureIndication,                     messageType = '41'O;  //65
+  updateBearerRequest,                               messageType = '61'O;  //97 
+  updateBearerResponse,                              messageType = '62'O;  //98 
+  deleteBearerCommand,                               messageType = '42'O;  //66
+  deleteBearerFailureIndication,                     messageType = '43'O;  //67 
+  createIndirectDataForwardingTunnelRequest,         messageType = 'A6'O;  //166 
+  createIndirectDataForwardingTunnelResponse,        messageType = 'A7'O;  //167 
+  releaseAccessBearersRequest,                       messageType = 'AA'O;  //170
+  releaseAccessBearersResponse,                      messageType = 'AB'O;  //171 
+  stopPagingIndication,                              messageType = '49'O;  //73 
+  modifyAccessBearersRequest,                        messageType = 'D3'O;  //211
+  modifyAccessBearersResponse,                       messageType = 'D4'O;  //212
+  remoteUEReportNotification,                        messageType = '28'O;  //40
+  remoteUEReportAcknowledge,                         messageType = '29'O;  //41
+  forwardRelocationRequest,                          messageType = '85'O;  //133
+  forwardRelocationResponse,                         messageType = '86'O;  //134
+  forwardRelocationCompleteNotification,             messageType = '87'O;  //135 
+  forwardRelocationCompleteAcknowledge,              messageType = '88'O;  //136 
+  contextRequest,                                    messageType = '82'O;  //130 
+  contextResponse,                                   messageType = '83'O;  //131
+  contextAcknowledge,                                messageType = '84'O;  //132 
+  identificationRequest,                             messageType = '80'O;  //128
+  identificationResponse,                            messageType = '81'O;  //129
+  forwardAccessContextNotification,                  messageType = '89'O;  //137
+  forwardAccessContextAcknowledge,                   messageType = '8A'O;  //138 
+  detachNotification,                                messageType = '95'O;  //149 
+  detachAcknowledge,                                 messageType = '96'O;  //150 
+  changeNotificationRequest,                         messageType = '26'O;  //38
+  changeNotificationResponse,                        messageType = '27'O;  //39
+  relocationCancelRequest,                           messageType = '8B'O;  //139
+  relocationCancelResponse,                          messageType = '8C'O;  //140
+  configurationTransferTunnel,                       messageType = '8D'O;  //141
+  rAN_InformationRelay,                              messageType = '98'O;  //152 
+  suspendNotification,                               messageType = 'A2'O;  //162 
+  suspendAcknowledge,                                messageType = 'A3'O;  //163 
+  resumeNotification,                                messageType = 'A4'O;  //164
+  resumeAcknowledge,                                 messageType = 'A5'O;  //165
+  cSPagingIndication,                                messageType = '97'O;  //151 
+  createForwardingTunnelRequest,                     messageType = 'A0'O;  //160 
+  createForwardingTunnelResponse,                    messageType = 'A1'O;  //161 
+  deletePDN_ConnectionSetRequest,                    messageType = '65'O;  //101
+  deletePDN_ConnectionSetResponse,                   messageType = '66'O;  //102
+  traceSessionActivation,                            messageType = '47'O;  //71
+  traceSessionDeactivation,                          messageType = '48'O;  //72 
+  updatePDN_ConnectionSetRequest,                    messageType = 'C8'O;  //200
+  updatePDN_ConnectionSetResponse,                   messageType = 'C9'O;  //201
+  pGW_RestartNotification,                           messageType = 'B3'O;  //179
+  pGW_RestartNotificationAcknowledge,                messageType = 'B4'O;  //180
+  pGW_DownlinkTriggeringNotification,                messageType = '67'O;  //103
+  pGW_DownlinkTriggeringAcknowledge,                 messageType = '68'O;  //104
+  alertMMENotification,                              messageType = '99'O;  //153
+  alertMMEAcknowledge,                               messageType = '9A'O;  //154
+  uEActivityNotification,                            messageType = '9B'O;  //155
+  uEActivityAcknowledge,                             messageType = '9C'O;  //156
+  iSR_StatusIndication,                              messageType = '9D'O;  //157
+  uE_RegistrationQueryRequest,                       messageType = '9E'O;  //158
+  uE_RegistrationQueryResponse,                      messageType = '9F'O;  //159
+  mBMSSessionStartRequest,                           messageType = 'E7'O;  //231
+  mBMSSessionStartResponse,                          messageType = 'E8'O;  //232
+  mBMSSessionUpdateRequest,                          messageType = 'E9'O;  //233
+  mBMSSessionUpdateResponse,                         messageType = 'EA'O;  //234
+  mBMSSessionStopRequest,                            messageType = 'EB'O;  //235
+  mBMSSessionStopResponse,                           messageType = 'EC'O;  //236
+  )";                          
+};
+
+
+
+} with { encode "RAW"} // End of module
diff --git a/test/GTPv2_Test.cfg b/test/GTPv2_Test.cfg
new file mode 100644
index 0000000..0e52a1b
--- /dev/null
+++ b/test/GTPv2_Test.cfg
@@ -0,0 +1,5 @@
+[LOGGING]
+FileMask := LOG_ALL | TTCN_MATCHING
+
+[EXECUTE]
+GTPv2_Test.control
diff --git a/test/GTPv2_Test.ttcn b/test/GTPv2_Test.ttcn
new file mode 100644
index 0000000..cf0ce6e
--- /dev/null
+++ b/test/GTPv2_Test.ttcn
@@ -0,0 +1,1877 @@
+///////////////////////////////////////////////////////////////////////////////
+// Copyright (c) 2000-2018 Ericsson Telecom AB
+// All rights reserved. This program and the accompanying materials
+// are made available under the terms of the Eclipse Public License v2.0
+// which accompanies this distribution, and is available at
+// https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html
+///////////////////////////////////////////////////////////////////////////////
+//
+//  File:               GTPv2_Test.ttcn
+//  Description:        GTPv2 15.2.0 protocol module example test
+//  Rev:                <RnXnn>
+//  Prodnr:             CNL 113 870
+//  Contact:            http://ttcn.ericsson.se
+///////////////////////////////////////////////////////////////////////////////
+
+module GTPv2_Test
+{
+
+import from GTPv2_Types all;
+
+type component ct_GTPv2{}
+
+
+template PDU_GTPCv2 t_pdu_gtpcv2 (octetstring pl_messageType,GTPCv2_PDUs pl_pdu) :={
+  spare := '00'B, 
+  mp_Bit_or_Spare := '1'B,
+  t_Bit := '0'B,
+  p_Bit := '0'B,
+  version := '010'B, 
+  messageType := pl_messageType,
+  lengthf := 0, 
+  tEID := omit,
+  sequenceNumber := '000000'O,
+  spare3 := '0000'B, // 0
+  messagePriorityOrSpare := '0001'B,
+  gtpcv2_pdu := pl_pdu,
+  piggybackPDU_GTPCv2 := omit
+}
+//Echo Request, Echo Response and Version Not Supported Indication messages 
+template PDU_GTPCv2 t_pdu_gtpcv2_2 (octetstring pl_messageType,GTPCv2_PDUs pl_pdu) modifies t_pdu_gtpcv2:={
+  mp_Bit_or_Spare := '0'B,
+  messageType := pl_messageType,
+  lengthf := 0, 
+  messagePriorityOrSpare := '0000'B,
+  gtpcv2_pdu := pl_pdu
+}
+
+template PDU_GTPCv2 t_m_pdu_gtpcv2 (octetstring pl_messageType,GTPCv2_PDUs pl_pdu) modifies t_pdu_gtpcv2 := {
+  lengthf := ?
+}
+
+template PDU_GTPCv2 t_m_pdu_gtpcv2_2 (octetstring pl_messageType,GTPCv2_PDUs pl_pdu) modifies t_pdu_gtpcv2_2 := {
+  lengthf := ?
+}
+
+template AccessPointName t_accessPointName := {
+  elementIdentifier := '47'O,
+  lengthIndicator := 4,
+  instance := '0000'B,
+  spare := '0000'B,
+  aPN_Value := 'AAAAAAAA'O
+}
+
+template AggregateMaximumBitRate t_ambr := {
+  elementIdentifier := '48'O,
+  lengthIndicator := 8,
+  instance := '0000'B,
+  spare := '0000'B,
+  aPN_AMBR_for_uplink := 'AAAAAAAA'O, 
+  aPN_AMBR_for_downlink := 'BBBBBBBB'O
+}
+
+template Cause t_cause := {
+  elementIdentifier := '02'O,
+  lengthIndicator := 2,
+  instance := '0000'B,
+  spare := '0000'B,
+  causeValue := '02'O,
+  cS := '1'B,
+  bCE := '1'B,
+  pCE := '1'B,
+  spare2 := '11111'B,
+  typeOfOffendingIE := omit,
+  lengthIndicator2  := omit,
+  instanceOfOffendingIE  := omit,
+  spare3  := omit	   
+};
+
+template RAN_NASCause t_RAN_NASCause1 := {
+  elementIdentifier := 'AC'O,
+  lengthIndicator := 2,
+  instance := '0000'B,
+  spare := '0000'B,
+  causeType := '0001'B,
+  protocolType := '0001'B,
+  causeValue := 'AA'O,
+  additionalOctets := omit
+}
+template RAN_NASCause t_RAN_NASCause2 modifies t_RAN_NASCause1 := {
+  causeValue := 'BB'O
+}
+  
+template BearerContextGrouped t_m_bearerContextGrouped (
+  template Cause pl_cause := t_cause,
+  template RAN_NASCause pl_RAN_NASCause1 := t_RAN_NASCause1,
+  template RAN_NASCause pl_RAN_NASCause2 := t_RAN_NASCause2)
+  modifies t_bearerContextGrouped:= {
+  lengthIndicator := 18,
+  bearerContextIEs :=
+  {	  
+    rAN_NASCause := {pl_RAN_NASCause1,pl_RAN_NASCause2}
+  }
+}
+
+
+template BearerContextGrouped t_bearerContextGrouped (template Cause pl_cause := t_cause):= {
+  elementIdentifier := '5D'O,
+  lengthIndicator := 6,
+  instance := '0000'B,  
+  spare := '0000'B,
+  bearerContextIEs :=
+  {	  
+    ePS_Bearer_ID := omit,
+    cause := pl_cause,
+    ePS_Bearer_TFT := omit,
+    fullyQualifiedTEID := omit,
+    bearerLevel_QoS := omit,
+    chargingID := omit,
+    bearerFlags := omit,
+    transactionIdentifier := omit,
+    protocolConfigOptions := omit,
+    rAN_NASCause := omit,
+    additionalProtocolConfigOptions := omit,
+    extendedProtocolConfigOptions := omit
+  }
+}
+
+template CNOperatorSelectionEntity t_cNOperatorSelectionEntity := {
+  elementIdentifier := 'AD'O,
+  lengthIndicator := 1,
+  instance := '0000'B,  
+  spare := '0000'B,
+  selectionEntity := '01'B,
+  spare2 := '000000'B,
+  additionalOctets := omit
+}
+  
+template EPC_Timer t_ePCTimer := {
+  elementIdentifier := '9C'O,
+  lengthIndicator := 1,
+  instance := '1111'B,
+  spare := '0000'B,
+  timerValue := 2,
+  timerUnit := '111'B,
+  additionalOctets := omit
+}
+
+template EPS_BearerID t_ePS_BearerID := {
+  elementIdentifier := '49'O,
+  lengthIndicator := 1,
+  instance := '1111'B,
+  spare := '0000'B,
+  ePS_Bearer_ID_Value := 4,
+  spare2 := '0000'B,
+  additionalOctets := omit
+}
+template  FullyQualifiedTEID t_fullyQualifiedTEID:= {
+  elementIdentifier := '57'O,
+  lengthIndicator := 9,
+  instance := '0000'B,
+  spare := '0000'B,
+  interfaceType := 24,        
+  v6_Flag := '0'B,
+  v4_Flag := '1'B,
+  tEID_GRE_Key := '00000003'O,
+  iPv4_Address := '1F801238'O,
+  iPv6_Address := omit,
+  additionalOctets := omit
+}
+
+template IMSI t_iMSI := {
+  elementIdentifier := '01'O,
+  lengthIndicator := 8,
+  instance := '0000'B,
+  spare := '0000'B,
+  iMSI_Value := '12345678901234F5'H
+}            
+
+template Indication t_indicationFlags := {
+  elementIdentifier := '4D'O,
+  lengthIndicator := 7,
+  instance := '0000'B,
+  spare :=  '0000'B,
+  sGWCI := '1'B,
+  iSRAI := '1'B,
+  iSRSI := '1'B,
+  oI := '1'B,	      
+  dFI := '1'B,
+  hI := '1'B,
+  dTF := '1'B,
+  dAF := '1'B,
+  mSV := '1'B,
+  sI := '1'B,
+  pT := '1'B,
+  pBit := '1'B,
+  cRSI := '1'B,
+  cFSI := '1'B,
+  uIMSI := '1'B,
+  sQCI := '1'B,
+  cCRSI := '1'B,
+  iSRAU := '1'B,
+  mBMDT := '1'B,
+  s4AF := '1'B,
+  s6AF := '1'B, 
+  sRNI := '1'B,
+  pBIC := '1'B,
+  retLoc := '1'B,
+  cPSR := '1'B,
+  cLII := '1'B,
+  cSFBI := '1'B,	 	 	 
+  pPSI := '1'B, 
+  pPON_PPEI := '1'B, 
+  pPOF := '1'B, 
+  aRRL := '1'B, 
+  cPRAI := '1'B, 
+  aOPI := '1'B, 
+  aOSI := '1'B, 
+  pCRI := '1'B,
+  pSCI := '1'B,  
+  bDWI := '1'B,
+  dTCI := '1'B,
+  uASI := '1'B,
+  nSI := '1'B,
+  wPMSI := '1'B,
+  uNACCSI := '1'B,
+  pNSI := '1'B,
+  s11TF := '1'B,
+  pMTSMI := '1'B,
+  cPOPCI := '1'B,
+  ePCOSI := '1'B,
+  rOAAI := '1'B,
+  tSPCMI := '0'B, 
+  eNBCRSI  := '0'B,
+  spare_1 := '0'B, 
+  spare_2 := '0'B, 
+  spare_3 := '0'B, 
+  spare_4 := '0'B, 
+  spare_5 := '0'B, 
+  spare_6 := '0'B, 
+  additionalOctets := omit          
+}; 
+
+template Indication t_indicationFlags2 := {
+  elementIdentifier := '4D'O,
+  lengthIndicator := 2,
+  instance := '0000'B,
+  spare :=  '0000'B,
+  sGWCI := '1'B,
+  iSRAI := '1'B,
+  iSRSI := '1'B,
+  oI := '1'B,	      
+  dFI := '1'B,
+  hI := '1'B,
+  dTF := '1'B,
+  dAF := '1'B,
+  mSV := '1'B,
+  sI := '1'B,
+  pT := '1'B,
+  pBit := '1'B,
+  cRSI := '1'B,
+  cFSI := '1'B,
+  uIMSI := '1'B,
+  sQCI := '1'B,
+  cCRSI := omit,
+  iSRAU := omit,
+  mBMDT := omit,
+  s4AF := omit,
+  s6AF := omit, 
+  sRNI := omit,
+  pBIC := omit,
+  retLoc := omit,
+  cPSR := omit,
+  cLII := omit,
+  cSFBI := omit,	 	 	 
+  pPSI := omit, 
+  pPON_PPEI := omit, 
+  pPOF := omit, 
+  aRRL := omit, 
+  cPRAI := omit, 
+  aOPI := omit, 
+  aOSI := omit, 
+  pCRI := omit,
+  pSCI := omit,  
+  bDWI := omit,
+  dTCI := omit,
+  uASI := omit,
+  nSI := omit,
+  wPMSI := omit,
+  uNACCSI := omit,
+  pNSI := omit,
+  s11TF := omit,
+  pMTSMI := omit,
+  cPOPCI := omit,
+  ePCOSI := omit,
+  rOAAI := omit,
+  tSPCMI := omit,
+  eNBCRSI := omit,
+  spare_1 := omit,
+  spare_2 := omit,
+  spare_3 := omit,
+  spare_4 := omit,
+  spare_5 := omit,
+  spare_6 := omit,
+  additionalOctets := omit          
+}; 
+
+template IP_Address t_IP_Address := {
+  elementIdentifier := '4A'O,
+  lengthIndicator := 4,
+  instance := '1111'B,
+  spare := '0000'B,
+  iPv4_IPv6_Address := {
+    iPv4_Address := '01020304'O
+  }
+}
+
+template IPv4ConfigurationPrameters t_IPv4ConfigurationPrameters := {
+  elementIdentifier := 'A6'O,
+  lengthIndicator := 5,
+  instance := '1111'B,
+  spare := '0000'B,
+  subnetPrefixLength := 1,
+  iPv4DefaultRouterAddress := '01020304'O,
+  additionalOctets := omit          
+}
+  
+template LoadControlInformationGrouped t_loadControlInformationGrouped (template SequenceNumber pl_sequenceNumber := t_sequenceNumber,template  Metric pl_metric := t_metric):= {
+  elementIdentifier := 'B5'O,
+  lengthIndicator := 13,
+  instance := '1111'B,
+  spare := '0000'B,
+  loadControlInformationIEs := {
+    loadControlSequenceNumber := pl_sequenceNumber,
+    loadMetric := pl_metric,
+    listOfAPNandRelativeCapacity := omit
+  }
+}
+
+template Metric t_metric := {
+  elementIdentifier := 'B6'O,
+  lengthIndicator := 1,
+  instance := '1111'B,
+  spare := '0000'B,
+  metric := 10
+}
+
+template NodeIdentifier t_nodeIdentifier := {
+  elementIdentifier := 'B0'O,   
+  lengthIndicator := 10,
+  instance := '1111'B,
+  spare := '0000'B,
+  lenghOfNodeName := 4,
+  nodeName := '01020304'O,
+  lenghOfNodeRealm := 4,
+  nodeRealm := '01020304'O,
+  additionalOctets := omit 
+}
+
+template NodeNumber t_nodeNumber := {
+  elementIdentifier := 'AF'O,   
+  lengthIndicator := 5,
+  instance := '1111'B,
+  spare := '0000'B,
+  lenghOfNodeNumber := 4,
+  nodeNumber := '01020304'O,
+  additionalOctets := omit 
+}
+
+template OverloadControlInformationGrouped t_overloadControlInformationGrouped (template SequenceNumber pl_sequenceNumber := t_sequenceNumber,template Metric pl_metric := t_metric,template  EPC_Timer pl_ePCTimer := t_ePCTimer):= {
+  elementIdentifier := 'B4'O,
+  lengthIndicator := 18,
+  instance := '1111'B,
+  spare := '0000'B,
+  overloadControlInformationIEs := {
+    overloadControlSequenceNumber := pl_sequenceNumber,
+    overloadReductionMetric := pl_metric,
+    periodOfValidity := pl_ePCTimer,
+    listOfAccessPointName := omit
+  }
+
+}
+
+template PresenceReportingAreaAction t_presenceReportingAreaAction := {
+  elementIdentifier := 'B1'O,
+  lengthIndicator := 69,
+  instance := '1111'B,
+  spare := '0000'B,
+  actionField := '111'B,
+  iNAPRA := '1'B,
+  spare2 := '0000'B,
+  presenceReportingAreaIdentifier := '010203'O,
+  numberOfRAI := 1,
+  numberOfTAI := 1,
+  numberOfMacroENodeB := 1,
+  spare3 := '00'B,
+  numberOfHomeENodeB := 1,
+  spare4 := '00'B,
+  numberOfECGI := 1,
+  spare5 := '00'B,
+  numberOfSAI := 1,
+  spare6 := '00'B,
+  numberOfCGI := 1,
+  spare7 := '00'B,
+  tAIs := {
+    {
+      mccDigit1 := '2'H,
+      mccDigit2 := '4'H,
+      mccDigit3 := '0'H,
+      mncDigit3 := 'F'H,
+      mncDigit1 := '9'H,
+      mncDigit2 := '9'H,
+      tAC := '0102'O
+    }
+  },
+  macroENBIDs := {
+    {
+      mccDigit1 := '2'H,
+      mccDigit2 := '4'H,
+      mccDigit3 := '0'H,
+      mncDigit3 := 'F'H,
+      mncDigit1 := '9'H,
+      mncDigit2 := '9'H,
+      spare2 := '0000'B,
+      targetID := '00110011001100110011'B
+    }
+  },
+  homeENBIDs := {
+    {
+      mccDigit1 := '2'H,
+      mccDigit2 := '4'H,
+      mccDigit3 := '0'H,
+      mncDigit3 := 'F'H,
+      mncDigit1 := '9'H,
+      mncDigit2 := '9'H,
+      spare2 := '0000'B,
+      targetID := '0011001100110011001100110011'B
+    }
+  },
+  eCGIs := {
+    {
+      mccDigit1 := '2'H,
+      mccDigit2 := '4'H,
+      mccDigit3 := '0'H,
+      mncDigit3 := 'F'H,
+      mncDigit1 := '9'H,
+      mncDigit2 := '9'H,
+      spare := '0'H,
+      eCI := 123
+    }
+  },
+  rAIs := {
+    {
+      mccDigit1 := '2'H,
+      mccDigit2 := '4'H,
+      mccDigit3 := '0'H,
+      mncDigit3 := 'F'H,
+      mncDigit1 := '9'H,
+      mncDigit2 := '9'H,
+      lAC := '0102'O,
+      rAC := '0304'O
+    }
+  },
+  sAIs := {
+    {
+      mccDigit1 := '2'H,
+      mccDigit2 := '4'H,
+      mccDigit3 := '0'H,
+      mncDigit3 := 'F'H,
+      mncDigit1 := '9'H,
+      mncDigit2 := '9'H,
+      lAC := '0102'O,
+      sAC := '0304'O
+    }
+  },
+  cGIs := {
+    {
+      mccDigit1 := '2'H,
+      mccDigit2 := '4'H,
+      mccDigit3 := '0'H,
+      mncDigit3 := 'F'H,
+      mncDigit1 := '9'H,
+      mncDigit2 := '9'H,
+      lAC := '0102'O,
+      cI := '0304'O
+    }
+  },
+  numberOfExtendedMacroENODEB := 2,
+  spare8 := '00'B,
+  extendedMacroENBIDs := {
+    {
+      mccDigit1 := '2'H,
+      mccDigit2 := '4'H,
+      mccDigit3 := '0'H,
+      mncDigit3 := 'F'H,
+      mncDigit1 := '9'H,
+      mncDigit2 := '9'H,
+      spare := '00'B,
+      sMeNB := '0'B,
+      targetID  := '000000000000000000001'B
+    },
+    {
+      mccDigit1 := '2'H,
+      mccDigit2 := '4'H,
+      mccDigit3 := '0'H,
+      mncDigit3 := 'F'H,
+      mncDigit1 := '9'H,
+      mncDigit2 := '9'H,
+      spare := '00'B,
+      sMeNB := '0'B,
+      targetID  := '000000000000000000011'B
+    }
+  },
+  additionalOctets :=  omit
+}
+
+template PresenceReportingAreaAction t_presenceReportingAreaAction2 := {
+  elementIdentifier := 'B1'O,
+  lengthIndicator := 10,
+  instance := '1111'B,
+  spare := '0000'B,
+  actionField := '111'B,
+  iNAPRA := '1'B,
+  spare2 := '0000'B,
+  presenceReportingAreaIdentifier := '010203'O,
+  numberOfRAI := 0,
+  numberOfTAI := 0,
+  numberOfMacroENodeB := 0,
+  spare3 := '00'B,
+  numberOfHomeENodeB := 0,
+  spare4 := '00'B,
+  numberOfECGI := 0,
+  spare5 := '00'B,
+  numberOfSAI := 0,
+  spare6 := '00'B,
+  numberOfCGI := 0,
+  spare7 := '00'B,
+  tAIs := omit,
+  macroENBIDs := omit,
+  homeENBIDs := omit,
+  eCGIs := omit,
+  rAIs := omit,
+  sAIs := omit,
+  cGIs := omit,
+  numberOfExtendedMacroENODEB := omit,
+  spare8 := omit,
+  extendedMacroENBIDs := omit,
+  additionalOctets :=  omit
+}
+
+template PresenceReportingAreaInformation t_presenceReportingAreaInformation := {
+  elementIdentifier := 'B2'O,
+  lengthIndicator := 12,
+  instance := '0000'B,
+  spare := '0000'B,
+  presenceReportingAreaIdentifier := '010203'O,
+  iPRA := '1'B,
+  oPRA := '0'B,
+  aPRA := '1'B,
+  iNAPRA  := '0'B, 
+  spare2 := '0000'B,
+  additionalPRA := {
+    additionalPRA_Identifier := '000001'O,
+    iPRA := '1'B,
+    oPRA := '0'B,
+    aPRA := '1'B,
+    spare := '00000'B,
+    additionalPRA := 
+    {
+      additionalPRA_Identifier := '000002'O,
+      iPRA := '1'B,
+      oPRA := '0'B,
+      aPRA := '0'B,
+      spare := '00000'B,
+      additionalPRA := omit
+    }
+  },
+  additionalOctets := omit 
+}
+
+template ProcedureTransactionID t_procedureTransactionID := {
+  elementIdentifier := '64'O,   
+  lengthIndicator := 1,
+  instance := '1111'B,
+  spare := '0000'B,
+  pTI_Value := 5,
+  additionalOctets := omit 
+}
+
+template RAN_NASCause t_rAN_NASCause := { 
+  elementIdentifier := 'AC'O,   
+  lengthIndicator := 2,
+  instance := '1111'B,
+  spare := '0000'B,
+  causeType := '1010'B,
+  protocolType := '1010'B,
+  causeValue := '01'O,
+  additionalOctets := omit 
+}
+
+template RAT_Type t_ratType := {
+  elementIdentifier := '52'O,   
+  lengthIndicator := 1,
+  instance := '1111'B,
+  spare := '0000'B,
+  rAT_TypeValue := 5,
+  additionalOctets := omit 
+}
+
+template SequenceNumber t_sequenceNumber := {
+  elementIdentifier := 'B7'O,
+  lengthIndicator := 4,
+  instance := '1111'B,
+  spare := '0000'B,
+  sequenceNumber := 4
+}
+
+template TrustedWLANAccessNetworkIdentifier t_trustedWLANAccessNetworkIdentifier := {
+  elementIdentifier := 'A9'O,
+  lengthIndicator := 3,
+  instance := '0000'B,
+  spare := '0000'B,
+  bssIdIndicator := '0'B,
+  cIVAI := '1'B,
+  pLMNI := '1'B,
+  oPNAI := '1'B,
+  lAAI := '1'B,
+  spare2 := '000'B,
+  lengthOfSSID := 1,
+  SSID := 'AA'O,
+  BSSID := omit,
+  lengthOfCivicAddress :=  1,
+  civicAddressInformation :=  '01'O,
+  tWAN_PLMNID := '01020304'O,
+  lengthOfTWANOperatorName :=  1,
+  tWANOperatorName :=  '01'O,
+  relayIdentityType :=  1,
+  lengthOfRelayIdentity := 4,
+  relayIdentity := '01020304'O,
+  lengthOfcircuitID := 1,
+  circuitID := '01'O,
+  additionalOctets := omit
+}
+template TrustedWLANModeIndication t_trustedWLANModeIndication := {
+  elementIdentifier := 'AE'O,
+  lengthIndicator := 1,
+  instance := '0000'B,
+  spare := '0000'B,
+  sCM := '0'B,
+  mCM := '1'B,
+  spare2 := '000000'B,
+  additionalOctets := omit
+}
+
+template TWANIdentifierTimestamp t_tWANIdentifierTimestamp := {
+  elementIdentifier := 'B3'O,
+  lengthIndicator := 4,
+  instance := '0000'B,
+  spare := '0000'B,
+  tWANIdentifierTimestampValue := '01020304'O,
+  additionalOctets := omit
+}
+
+template MDT_Configuration t_mDT_Configuration := {
+  elementIdentifier := 'A2'O,
+  lengthIndicator:= 17,
+  instance:= '0000'B,
+  spare:= '0000'B,
+  jobType:= '01'O,
+  listOfmeasurements:= '01020304'O,
+  reportingTrigger:= '01'O,
+  reportInterval:= '02'O,
+  reportAmount:= '03'O,
+  eventThresholdforRSRP:= '04'O,  
+  eventThresholdforRSRQ:='05'O ,
+  lengthOfAreaScope:= 0,
+  areaScope := omit,
+  cRRMI:= '0'B,
+  mPI:= '1'B,
+  pMI:= '0'B,
+  pLI:= '1'B,
+  spare2:= '0000'B,
+  collectionPeriodforRRMmeasurementsLTE := omit,
+  measurementPeriodLTE := min1,
+  positioningMethod := omit,
+  numberOfMDT_PLMNs := 1,
+  mDT_PLMN_List  := {'010203'O},
+  additionalOctets := omit
+}
+template SCEF_PDN_ConnectionGrouped_List t_sCEF_PDN_ConnectionGrouped_List :=
+{
+  {
+    elementIdentifier := 'C3'O,
+    lengthIndicator:= 27,
+    instance:= '0000'B,
+    spare:= '0000'B,
+    sCEF_PDN_ConnectionIEs :=
+    {
+      accessPointName := valueof(t_accessPointName),
+      ePS_BearerID := valueof(t_ePS_BearerID),
+      nodeIdentifier := valueof(t_nodeIdentifier)
+    }
+  }
+}
+  
+template PDN_ConnectionGrouped_List t_pDN_ConnectionGrouped_List := 
+{
+  {
+    elementIdentifier := '6D'O,
+    lengthIndicator:= 5,
+    instance:= '0000'B,
+    spare:= '0000'B,
+    pDN_Connection_IEs :=
+    {
+      accessPointName :=  omit,
+      iP_Address := omit,
+      linkedEPS_Bearer_ID := omit,
+      fullyQualifiedTEID := omit,
+      fullyQualifiedDomainName := omit,
+      bearerContexts := omit,
+      apn_ambr := omit,
+      chargingCharacteristics := omit,
+      aPN_Restriction := omit,
+      selectionMode := omit,
+      changeReportingAction := omit,
+      cSG_InformationReportingAction := omit,
+      heNBInformationReporting := omit,
+      indicationFlags := omit,
+      signallingPriorityIndication := omit,
+      changeToReportFlags := omit,
+      presenceReportingAreaAction := omit,
+      wLANOffloadabilityIndication :=
+      {
+        elementIdentifier := 'B9'O,
+        lengthIndicator := 1,
+        instance := '0000'B,
+        spare := '0000'B,
+        uTRANIndication := '0'B,
+        eUTRANIndication := '0'B,
+        spare2 := '000000'B,
+        additionalOctets := omit
+      },
+      remoteUEContext := omit,
+      pDN_Type := omit,
+      headerCompressionConfiguration := omit
+    }
+  }
+}
+
+template MillisecondTimeStamp t_millisecondTimeStamp :=
+{
+  elementIdentifier := 'BC'O,
+  lengthIndicator := 6,
+  instance:= '0000'B,
+  spare:= '0000'B,
+  millisecondTimeStampValue := '000000001234'O,
+  additionalOctets := omit
+}
+
+template IntegerNumber t_integerNumber :=
+{
+  elementIdentifier := 'BB'O,
+  lengthIndicator := 2,
+  instance:= '0000'B,
+  spare:= '0000'B,
+  integerNumberValue := {int2 := 5}
+}
+
+template FullyQualifiedContainer t_nBIFOMContainer :=
+{
+  elementIdentifier := '76'O,
+  lengthIndicator := 5,
+  instance:= '0000'B,
+  spare:= '0000'B,
+  containerType := 4,
+  spare2:= '0000'B,
+  f_ContainerField := {nBIFOM_Container := '01020304'O}
+}
+
+template RemoteUEContextGrouped_List t_remoteUEContextGrouped :=
+{
+  {
+    elementIdentifier := 'BF'O,
+    lengthIndicator := 6,
+    instance:= '0000'B,
+    spare:= '0000'B,
+    remoteUEContextIEs := 
+    {
+      remoteUserID := omit,
+      remoteUEIPInformation :=
+      {
+        elementIdentifier := 'C1'O,
+        lengthIndicator := 2,
+        instance:= '0000'B,
+        spare:= '0000'B,
+        remoteUEIPInformation := 'f001'O
+      }
+    }
+  }
+}
+
+template ExtendedProtocolConfigOptions t_extendedProtocolConfigOptions :=
+{
+  elementIdentifier := 'C5'O,
+  lengthIndicator := 1,
+  instance:= '0000'B,
+  spare:= '0000'B,
+  ePCO := '05'O
+}
+
+template ServingPLMNRateControl t_servingPLMNRateControl :=
+{
+  elementIdentifier := 'C6'O,
+  lengthIndicator := 4,
+  instance:= '0000'B,
+  spare:= '0000'B,
+  uplinkRateLimit := 1000,
+  downlinkRateLimit := 1000,  
+  additionalOctets := omit
+}
+
+template PagingAndServiceInformation t_pagingAndServiceInformation :=
+{
+  elementIdentifier := 'BA'O,
+  lengthIndicator := 2,
+  instance:= '0000'B,
+  spare:= '0000'B,
+  ePS_Bearer_ID_Value := 4,
+  spare2 := '0000'B,
+  pPI := '0'B,
+  spare3 := '0000000'B,
+  pagingPolicyIndicationValue := omit,
+  spare4 := omit,
+  additionalOctets := omit
+}
+
+template CIoT_OptimizationsSupportIndication t_cIoT_OptimizationsSupportIndication :=
+{
+  elementIdentifier := 'C2'O,
+  lengthIndicator := 1,
+  instance:= '0000'B,
+  spare:= '0000'B,
+  sGNIPDN := '0'B,
+  sCNIPDN := '0'B,
+  aWOPDN := '0'B,
+  iHCSI := '0'B,
+  spare2 := '0000'B,
+  additionalOctets := omit
+}
+
+template Mapped_UE_UsageType t_mapped_UE_UsageType :=
+{
+  elementIdentifier := 'C8'O,
+  lengthIndicator := 2,
+  instance:= '0000'B,
+  spare := '0000'B,
+  mapped_UE_UsageType := '0102'O,
+  additionalOctets := omit
+}
+
+template Secondary_RAT_UsageDataReport t_secondary_RAT_UsageDataReport :=
+{ 
+  elementIdentifier := 'C9'O,
+  lengthIndicator := 27,
+  instance := '0000'B,
+  spare := '0000'B,
+  iRPGW := '0'B,
+  iRSGW := '0'B,
+  spare2 := '000000'B,
+  secondaryRATType := 1,
+  eBI := '0000'B,
+  spare3 := '0000'B,
+  startTimestamp := '01020304'O, 
+  endTimestamp := '01020305'O,
+  usageDataDL := '0102030405060708'O,
+  usageDataUL := '0102030405060708'O,
+  additionalOctets := omit
+}
+
+template UP_FunctionSelectionIndicationFlags t_uP_FunctionSelectionIndicationFlags :=
+{
+  elementIdentifier := 'CA'O,
+  lengthIndicator := 1,
+  instance:= '0000'B,
+  spare:= '0000'B,
+  dCNR := '0'B,
+  spare2 := '0000000'B,
+  additionalOctets := omit
+}
+  
+testcase tc_createSessionRequest() runs on ct_GTPv2{
+  var GTPCv2_PDUs v_gtpcv2_pdu := {
+    createSessionRequest := {
+      iMSI := omit,
+      mSISDN := omit,
+      mEI := omit,
+      userLocationInfo := omit,
+      servingNetwork := omit,
+      rAT_Type := valueof(t_ratType),
+      indication := omit,
+      fullyQualifiedTEID := {valueof(t_fullyQualifiedTEID)},
+      accessPointName := valueof(t_accessPointName),
+      selectionMode := omit,
+      pDN_Type := omit,
+      pDN_AddressAllocation := omit,
+      maxAPN_Restriction := omit,
+      ambr := omit,
+      linkedEPS_Bearer_ID := omit,
+      trustedWLANModeIndication := valueof(t_trustedWLANModeIndication),
+      protocolConfigOptions := omit,
+      bearerContextGrouped := {valueof(t_bearerContextGrouped)},
+      traceInformation := omit,
+      recovery := omit,
+      csid := omit,
+      uE_TimeZone := omit,
+      user_CSG_Information := omit,
+      chargingCharacteristics := omit,
+      lDN := omit,
+      signallingPriorityIndication := omit,
+      iP_Addr := omit,
+      portNumber := omit,
+      aPCO := omit,
+      trustedWLANAccessNetworkIdentifier :=  {valueof(t_trustedWLANAccessNetworkIdentifier)},
+      cNOperatorSelectionEntity := valueof(t_cNOperatorSelectionEntity),
+      presenceReportingAreaInformation := {valueof(t_presenceReportingAreaInformation)},
+      overloadControlInformationGrouped :=  {valueof(t_overloadControlInformationGrouped), valueof(t_overloadControlInformationGrouped)},
+      originationTimeStamp := valueof(t_millisecondTimeStamp),
+      maximumWaitTime := valueof(t_integerNumber),
+      wLANLocationTimestamp :=  valueof(t_tWANIdentifierTimestamp),
+      nBIFOMContainer := valueof(t_nBIFOMContainer),
+      remoteUEContextGrouped := valueof(t_remoteUEContextGrouped),
+      nodeIdentifier := {valueof(t_nodeIdentifier)},            
+      extendedProtocolConfigOptions := valueof(t_extendedProtocolConfigOptions),
+      servingPLMNRateControl := valueof(t_servingPLMNRateControl),
+      counter := omit,
+      mapped_UE_UsageType := valueof(t_mapped_UE_UsageType),
+      fullyQualifiedDomainName := omit,
+      secondary_RAT_UsageDataReport := {valueof(t_secondary_RAT_UsageDataReport)},
+      uP_FunctionSelectionIndicationFlags := valueof(t_uP_FunctionSelectionIndicationFlags),
+      privateExtension := omit
+    }
+  }
+  var PDU_GTPCv2 v_pdu_gtpcv2 := valueof(t_pdu_gtpcv2('20'O,v_gtpcv2_pdu));
+  log("Original: ", v_pdu_gtpcv2);
+  var octetstring v_gtp_encoded := enc_PDU_GTPCv2(v_pdu_gtpcv2);
+  log("Encoded value: ", v_gtp_encoded);
+  var PDU_GTPCv2 v_gtp_decoded := dec_PDU_GTPCv2(v_gtp_encoded);
+  log("Decoded: ", v_gtp_decoded);
+  if(not match(v_gtp_decoded,t_m_pdu_gtpcv2('20'O,v_gtpcv2_pdu))) {
+    setverdict(fail);
+  } 
+  setverdict(pass);
+}
+  
+testcase tc_createSessionResponse() runs on ct_GTPv2{
+  var GTPCv2_PDUs v_gtpcv2_pdu := {
+    createSessionResponse := {
+      cause := valueof(t_cause),
+      changeReportingAction := omit,
+      cSG_InformationReportingAction := omit,
+      heNBInformationReporting := omit,
+      fullyQualifiedTEID := omit,
+      pDN_AddressAllocation := omit,
+      aPN_Restriction := omit,
+      ambr := omit,
+      linkedEPS_Bearer_ID := omit,
+      protocolConfigOptions := omit,
+      bearerContextGrouped := omit,
+      recovery := omit,
+      chargingGatewayName := omit,
+      chargingGatewayAddress := omit,
+      csid := omit,
+      lDN := omit,
+      pGW_Back_OffTime := omit,
+      aPCO := omit,
+      trustedWLANIPv4Parameters := valueof(t_IPv4ConfigurationPrameters),
+      indicationFlags := valueof(t_indicationFlags),
+      presenceReportingAreaAction := {valueof(t_presenceReportingAreaAction)},
+      loadControlInformationGrouped :=  {valueof(t_loadControlInformationGrouped), valueof(t_loadControlInformationGrouped), valueof(t_loadControlInformationGrouped)},
+      overloadControlInformationGrouped :=  {valueof(t_overloadControlInformationGrouped), valueof(t_overloadControlInformationGrouped)},
+      nBIFOMContainer := valueof(t_nBIFOMContainer),
+      pDNConnectionChargingID := omit,
+      extendedProtocolConfigOptions := valueof(t_extendedProtocolConfigOptions),
+      privateExtension := omit
+    }
+  }
+  var PDU_GTPCv2 v_pdu_gtpcv2 := valueof(t_pdu_gtpcv2('21'O,v_gtpcv2_pdu));
+  log("Original: ", v_pdu_gtpcv2);  
+  var octetstring v_gtp_encoded := enc_PDU_GTPCv2(v_pdu_gtpcv2);
+  log("Encoded value: ", v_gtp_encoded);  
+  var PDU_GTPCv2 v_gtp_decoded := dec_PDU_GTPCv2(v_gtp_encoded);
+  log("Decoded: ", v_gtp_decoded);
+  if(not match(v_gtp_decoded,t_m_pdu_gtpcv2('21'O,v_gtpcv2_pdu))) {
+    setverdict(fail);
+  } 
+
+  v_gtpcv2_pdu.createSessionResponse.indicationFlags := valueof(t_indicationFlags2);
+  v_pdu_gtpcv2 := valueof(t_pdu_gtpcv2('21'O,v_gtpcv2_pdu));
+  log("Original: ", v_pdu_gtpcv2);  
+  v_gtp_encoded := enc_PDU_GTPCv2(v_pdu_gtpcv2);
+  log("Encoded value: ", v_gtp_encoded);  
+  v_gtp_decoded := dec_PDU_GTPCv2(v_gtp_encoded);
+  log("Decoded: ", v_gtp_decoded);
+  if(not match(v_gtp_decoded,t_m_pdu_gtpcv2('21'O,v_gtpcv2_pdu))) {
+    setverdict(fail);
+  }
+  
+  setverdict(pass);
+}
+  
+testcase tc_createBearerRequest() runs on ct_GTPv2{
+  var GTPCv2_PDUs v_gtpcv2_pdu := {
+    createBearerRequest := {
+      procedureTransactionID := omit,
+      linkedEPS_BearerID := valueof(t_ePS_BearerID),
+      protocolConfigOptions := omit,
+      bearerContextGrouped := {valueof(t_bearerContextGrouped)},
+      csid := omit,
+      changeReportingAction := omit,
+      cSG_InformationReportingAction := omit,
+      heNBInformationReporting := omit,
+      presenceReportingAreaAction := {valueof(t_presenceReportingAreaAction)},
+      indicationFlags := valueof(t_indicationFlags),
+      loadControlInformationGrouped :=  {valueof(t_loadControlInformationGrouped), valueof(t_loadControlInformationGrouped), valueof(t_loadControlInformationGrouped)},
+      overloadControlInformationGrouped :=  {valueof(t_overloadControlInformationGrouped), valueof(t_overloadControlInformationGrouped)},
+      nBIFOMContainer := valueof(t_nBIFOMContainer),
+      privateExtension := omit
+    }
+  }
+  var PDU_GTPCv2 v_pdu_gtpcv2 := valueof(t_pdu_gtpcv2('5F'O,v_gtpcv2_pdu));
+  log("Original: ", v_pdu_gtpcv2);
+  var octetstring v_gtp_encoded := enc_PDU_GTPCv2(v_pdu_gtpcv2);
+  log("Encoded value: ", v_gtp_encoded);
+  var PDU_GTPCv2 v_gtp_decoded := dec_PDU_GTPCv2(v_gtp_encoded);
+  log("Decoded: ", v_gtp_decoded);
+  if(not match(v_gtp_decoded,t_m_pdu_gtpcv2('5F'O,v_gtpcv2_pdu))) {
+    setverdict(fail);
+  } 
+  setverdict(pass);
+}
+  
+testcase tc_createBearerResponse() runs on ct_GTPv2{
+  var GTPCv2_PDUs v_gtpcv2_pdu := {
+    createBearerResponse := {
+      cause := valueof(t_cause),
+      bearerContextGrouped := omit,
+      recovery := omit,
+      csid := omit,
+      protocolConfigOptions := omit,
+      uE_TimeZone := omit,
+      uLI := omit,
+      trustedWLANAccessNetworkIdentifier:=  {valueof(t_trustedWLANAccessNetworkIdentifier)},
+      overloadControlInformationGrouped :=  {valueof(t_overloadControlInformationGrouped), valueof(t_overloadControlInformationGrouped)},
+      presenceReportingAreaInformation := {valueof(t_presenceReportingAreaInformation)},
+      iP_Addr := {valueof(t_IP_Address)},
+      wLANLocationTimestamp := omit, 
+      portNumber := omit, 
+      nBIFOMContainer := valueof(t_nBIFOMContainer),
+      extendedProtocolConfigOptions := omit,
+      privateExtension := omit
+    }
+  }
+  var PDU_GTPCv2 v_pdu_gtpcv2 := valueof(t_pdu_gtpcv2('60'O,v_gtpcv2_pdu));
+  log("Original: ", v_pdu_gtpcv2);
+  var octetstring v_gtp_encoded := enc_PDU_GTPCv2(v_pdu_gtpcv2);
+  log("Encoded value: ", v_gtp_encoded);
+  var PDU_GTPCv2 v_gtp_decoded := dec_PDU_GTPCv2(v_gtp_encoded);
+  log("Decoded: ", v_gtp_decoded);
+  if(not match(v_gtp_decoded,t_m_pdu_gtpcv2('60'O,v_gtpcv2_pdu))) {
+    setverdict(fail);
+  } 
+  setverdict(pass);
+}
+  
+testcase tc_bearerResourceCommand() runs on ct_GTPv2{
+  var GTPCv2_PDUs v_gtpcv2_pdu := {
+    bearerResourceCommand := {
+      epsBearerIdentity := {valueof(t_ePS_BearerID)},
+      procedureTransactionID := valueof(t_procedureTransactionID),
+      flowQoS := omit,
+      tAD := omit,
+      rAT_Type := omit,
+      servingNetwork := omit,
+      userLocationInfo := omit,
+      indicationFlags := omit,
+      fullyQualifiedTEID := omit,
+      protocolConfigOptions := omit,
+      signallingPriorityIndication := omit,
+      overloadControlInformationGrouped :=  {valueof(t_overloadControlInformationGrouped), valueof(t_overloadControlInformationGrouped)},
+      nBIFOMContainer := omit, 
+      extendedProtocolConfigOptions := omit,
+      privateExtension := omit
+    }
+  }
+  var PDU_GTPCv2 v_pdu_gtpcv2 := valueof(t_pdu_gtpcv2('44'O,v_gtpcv2_pdu));
+  log("Original: ", v_pdu_gtpcv2);
+  var octetstring v_gtp_encoded := enc_PDU_GTPCv2(v_pdu_gtpcv2);
+  log("Encoded value: ", v_gtp_encoded);
+  var PDU_GTPCv2 v_gtp_decoded := dec_PDU_GTPCv2(v_gtp_encoded);
+  log("Decoded: ", v_gtp_decoded);
+  if(not match(v_gtp_decoded,t_m_pdu_gtpcv2('44'O,v_gtpcv2_pdu))) {
+    setverdict(fail);
+  } 
+  setverdict(pass);
+}
+  
+testcase tc_bearerResourceFailureIndication() runs on ct_GTPv2{
+  var GTPCv2_PDUs v_gtpcv2_pdu := {
+    bearerResourceFailureIndication := {
+      cause := valueof(t_cause),
+      linkedBearerIdentity := valueof(t_ePS_BearerID),
+      procedureTransactionID := valueof(t_procedureTransactionID),
+      indicationFlags := valueof(t_indicationFlags),
+      overloadControlInformationGrouped :=  {valueof(t_overloadControlInformationGrouped), valueof(t_overloadControlInformationGrouped)},
+      recovery := omit,
+      nBIFOMContainer := omit,
+      privateExtension := omit
+    }
+  }
+  var PDU_GTPCv2 v_pdu_gtpcv2 := valueof(t_pdu_gtpcv2('45'O,v_gtpcv2_pdu));
+  log("Original: ", v_pdu_gtpcv2);
+  var octetstring v_gtp_encoded := enc_PDU_GTPCv2(v_pdu_gtpcv2);
+  log("Encoded value: ", v_gtp_encoded);
+  var PDU_GTPCv2 v_gtp_decoded := dec_PDU_GTPCv2(v_gtp_encoded);
+  log("Decoded: ", v_gtp_decoded);
+  if(not match(v_gtp_decoded,t_m_pdu_gtpcv2('45'O,v_gtpcv2_pdu))) {
+    setverdict(fail);
+  } 
+  setverdict(pass);
+}
+  
+testcase tc_modifyBearerRequest() runs on ct_GTPv2{
+  var GTPCv2_PDUs v_gtpcv2_pdu := {
+    modifyBearerRequest := {
+      mEI := omit,
+      userLocationInfo := omit,
+      servingNetwork := omit,
+      rAT_Type := omit,
+      indicationFlags := omit,
+      fullyQualifiedTEID := omit,
+      ambr := omit,
+      delayDownlinkPacketNotificationReq := omit,
+      bearerContextGrouped := omit,
+      recovery := omit,
+      uE_TimeZone := omit,
+      csid := omit,
+      user_CSG_Information := omit,
+      iP_Addr := omit,
+      portNumber := omit,
+      lDN := omit,
+      cNOperatorSelectionEntity:= valueof(t_cNOperatorSelectionEntity),
+      presenceReportingAreaInformation := {valueof(t_presenceReportingAreaInformation)},
+      overloadControlInformationGrouped :=  {valueof(t_overloadControlInformationGrouped), valueof(t_overloadControlInformationGrouped)},
+      servingPLMNRateControl := omit,
+      counter := omit,
+      iMSI := omit, 
+      trustedWLANAccessNetworkIdentifier := omit, 
+      tWANIdentifierTimestamp := omit, 
+      secondary_RAT_UsageDataReport := omit,
+      privateExtension := omit
+    }
+  }
+  var PDU_GTPCv2 v_pdu_gtpcv2 := valueof(t_pdu_gtpcv2('22'O,v_gtpcv2_pdu));
+  log("Original: ", v_pdu_gtpcv2);
+  var octetstring v_gtp_encoded := enc_PDU_GTPCv2(v_pdu_gtpcv2);
+  log("Encoded value: ", v_gtp_encoded);
+  var PDU_GTPCv2 v_gtp_decoded := dec_PDU_GTPCv2(v_gtp_encoded);
+  log("Decoded: ", v_gtp_decoded);
+  if(not match(v_gtp_decoded,t_m_pdu_gtpcv2('22'O,v_gtpcv2_pdu))) {
+    setverdict(fail);
+  } 
+  setverdict(pass);
+}
+  
+testcase tc_modifyBearerResponse() runs on ct_GTPv2{
+  var GTPCv2_PDUs v_gtpcv2_pdu := {
+    modifyBearerResponse := {
+      cause := valueof(t_cause),
+      mSISDN := omit,
+      linkedEPS_Bearer_ID := omit,
+      aPN_Restriction := omit,
+      protocolConfigOptions := omit,
+      bearerContextGrouped := omit,
+      changeReportingAction := omit,
+      cSG_InformationReportingAction := omit,
+      heNBInformationReporting := omit,
+      chargingGatewayName := omit,
+      chargingGatewayAddress := omit,
+      csid := omit,
+      recovery := omit,
+      lDN := omit,
+      indicationFlags := omit,
+      presenceReportingAreaAction := {valueof(t_presenceReportingAreaAction)},
+      loadControlInformationGrouped :=  {valueof(t_loadControlInformationGrouped), valueof(t_loadControlInformationGrouped), valueof(t_loadControlInformationGrouped)},
+      overloadControlInformationGrouped :=  {valueof(t_overloadControlInformationGrouped), valueof(t_overloadControlInformationGrouped)},
+      pDNConnectionChargingID := omit,
+      privateExtension := omit
+    }
+  }
+  var PDU_GTPCv2 v_pdu_gtpcv2 := valueof(t_pdu_gtpcv2('23'O,v_gtpcv2_pdu));
+  log("Original: ", v_pdu_gtpcv2);
+  var octetstring v_gtp_encoded := enc_PDU_GTPCv2(v_pdu_gtpcv2);
+  log("Encoded value: ", v_gtp_encoded);
+  var PDU_GTPCv2 v_gtp_decoded := dec_PDU_GTPCv2(v_gtp_encoded);
+  log("Decoded: ", v_gtp_decoded);
+  if(not match(v_gtp_decoded,t_m_pdu_gtpcv2('23'O,v_gtpcv2_pdu))) {
+    setverdict(fail);
+  } 
+  setverdict(pass);
+}
+  
+testcase tc_deleteSessionRequest() runs on ct_GTPv2{
+  var GTPCv2_PDUs v_gtpcv2_pdu := {
+    deleteSessionRequest := {
+      cause := omit,
+      linkedEPS_Bearer_ID := omit,
+      uLI := omit,
+      indicationFlags := omit,
+      protocolConfigOptions := omit,
+      originatingNode := omit,
+      fullyQualifiedTEID := omit,
+      uE_TimeZone := omit,
+      uLITimestamp := omit,
+      rANNASReleaseCause := valueof(t_rAN_NASCause),
+      trustedWLANAccessNetworkIdentifier:=  {valueof(t_trustedWLANAccessNetworkIdentifier)},
+      tWANIdentifierTimestamp :=  {valueof(t_tWANIdentifierTimestamp)},
+      overloadControlInformationGrouped :=  {valueof(t_overloadControlInformationGrouped), valueof(t_overloadControlInformationGrouped)},
+      uELocalIP_Addr := omit,
+      portNumber := omit,
+      extendedProtocolConfigOptions := omit,
+      secondary_RAT_UsageDataReport := omit,
+      privateExtension := omit
+    }
+  }
+  var PDU_GTPCv2 v_pdu_gtpcv2 := valueof(t_pdu_gtpcv2('24'O,v_gtpcv2_pdu));
+  log("Original: ", v_pdu_gtpcv2);
+  var octetstring v_gtp_encoded := enc_PDU_GTPCv2(v_pdu_gtpcv2);
+  log("Encoded value: ", v_gtp_encoded);
+  var PDU_GTPCv2 v_gtp_decoded := dec_PDU_GTPCv2(v_gtp_encoded);
+  log("Decoded: ", v_gtp_decoded);
+  if(not match(v_gtp_decoded,t_m_pdu_gtpcv2('24'O,v_gtpcv2_pdu))) {
+    setverdict(fail);
+  } 
+  setverdict(pass);
+}
+  
+testcase tc_deleteBearerRequest() runs on ct_GTPv2{
+  var GTPCv2_PDUs v_gtpcv2_pdu := {
+    deleteBearerRequest := {
+      epsBearerIdentity := omit,
+      bearerContextGrouped := omit,
+      procedureTransactionID := omit,
+      protocolConfigOptions := omit,
+      csid := omit,  
+      cause := omit,
+      indicationFlags := valueof(t_indicationFlags),
+      loadControlInformationGrouped :=  {valueof(t_loadControlInformationGrouped), valueof(t_loadControlInformationGrouped), valueof(t_loadControlInformationGrouped)},
+      overloadControlInformationGrouped :=  {valueof(t_overloadControlInformationGrouped),valueof(t_overloadControlInformationGrouped)},
+      nBIFOMContainer := valueof(t_nBIFOMContainer),
+      extendedProtocolConfigOptions := valueof(t_extendedProtocolConfigOptions),
+      privateExtension := omit
+    }
+  }
+  var PDU_GTPCv2 v_pdu_gtpcv2 := valueof(t_pdu_gtpcv2('63'O,v_gtpcv2_pdu));
+  log("Original: ", v_pdu_gtpcv2);
+  var octetstring v_gtp_encoded := enc_PDU_GTPCv2(v_pdu_gtpcv2);
+  log("Encoded value: ", v_gtp_encoded);
+  var PDU_GTPCv2 v_gtp_decoded := dec_PDU_GTPCv2(v_gtp_encoded);
+  log("Decoded: ", v_gtp_decoded);
+  if(not match(v_gtp_decoded,t_m_pdu_gtpcv2('63'O,v_gtpcv2_pdu))) {
+    setverdict(fail);
+  } 
+  setverdict(pass);
+}
+  
+testcase tc_deleteSessionResponse() runs on ct_GTPv2{
+  var GTPCv2_PDUs v_gtpcv2_pdu := {
+    deleteSessionResponse := {
+      cause := valueof(t_cause),
+      recovery := omit,
+      protocolConfigOptions := omit,
+      indicationFlags := valueof(t_indicationFlags),
+      loadControlInformationGrouped :=  {valueof(t_loadControlInformationGrouped), valueof(t_loadControlInformationGrouped), valueof(t_loadControlInformationGrouped)},
+      overloadControlInformationGrouped :=  {valueof(t_overloadControlInformationGrouped), valueof(t_overloadControlInformationGrouped)},
+      extendedProtocolConfigOptions := valueof(t_extendedProtocolConfigOptions),
+      privateExtension := omit
+    }
+  }
+  var PDU_GTPCv2 v_pdu_gtpcv2 := valueof(t_pdu_gtpcv2('25'O,v_gtpcv2_pdu));
+  log("Original: ", v_pdu_gtpcv2);
+  var octetstring v_gtp_encoded := enc_PDU_GTPCv2(v_pdu_gtpcv2);
+  log("Encoded value: ", v_gtp_encoded);
+  var PDU_GTPCv2 v_gtp_decoded := dec_PDU_GTPCv2(v_gtp_encoded);
+  log("Decoded: ", v_gtp_decoded);
+  if(not match(v_gtp_decoded,t_m_pdu_gtpcv2('25'O,v_gtpcv2_pdu))) {
+    setverdict(fail);
+  } 
+  setverdict(pass);
+}
+  
+testcase tc_deleteBearerResponse() runs on ct_GTPv2{
+  var GTPCv2_PDUs v_gtpcv2_pdu := {
+    deleteBearerResponse := {
+      cause := valueof(t_cause),
+      linkedBearerIdentity := omit,
+      bearerContextGrouped := omit,
+      recovery := omit,
+      csid := omit,
+      protocolConfigOptions := omit,
+      uE_TimeZone := omit,
+      uLI := omit,
+      uLITimestamp := omit,
+      trustedWLANAccessNetworkIdentifier :=  valueof(t_trustedWLANAccessNetworkIdentifier),
+      tWANIdentifierTimestamp :=  valueof(t_tWANIdentifierTimestamp),
+      overloadControlInformationGrouped :=  {valueof(t_overloadControlInformationGrouped), valueof(t_overloadControlInformationGrouped)},
+      iP_Addr := {valueof(t_IP_Address)},
+      portNumber := omit,
+      nBIFOMContainer:= valueof(t_nBIFOMContainer),
+      secondary_RAT_UsageDataReport := omit,
+      privateExtension := omit
+    }
+  }
+  var PDU_GTPCv2 v_pdu_gtpcv2 := valueof(t_pdu_gtpcv2('64'O,v_gtpcv2_pdu));
+  log("Original: ", v_pdu_gtpcv2);
+  var octetstring v_gtp_encoded := enc_PDU_GTPCv2(v_pdu_gtpcv2);
+  log("Encoded value: ", v_gtp_encoded);
+  var PDU_GTPCv2 v_gtp_decoded := dec_PDU_GTPCv2(v_gtp_encoded);
+  log("Decoded: ", v_gtp_decoded);
+  if(not match(v_gtp_decoded,t_m_pdu_gtpcv2('64'O,v_gtpcv2_pdu))) {
+    setverdict(fail);
+  } 
+  setverdict(pass);
+}
+  
+testcase tc_downlinkDataNotification() runs on ct_GTPv2{
+  var GTPCv2_PDUs v_gtpcv2_pdu := {
+    downlinkDataNotification := {
+      cause := omit,
+      epsBearerIdentity := omit,
+      aRP := omit,
+      iMSI := omit,
+      fullyQualifiedTEID := omit, 
+      indicationFlags := valueof(t_indicationFlags),
+      loadControlInformationGrouped :=  valueof(t_loadControlInformationGrouped),
+      overloadControlInformationGrouped :=  valueof(t_overloadControlInformationGrouped),
+      pagingAndServiceInformation :=  valueof(t_pagingAndServiceInformation),
+      privateExtension := omit
+    }
+  }
+  var PDU_GTPCv2 v_pdu_gtpcv2 := valueof(t_pdu_gtpcv2('B0'O,v_gtpcv2_pdu));
+  log("Original: ", v_pdu_gtpcv2);
+  var octetstring v_gtp_encoded := enc_PDU_GTPCv2(v_pdu_gtpcv2);
+  log("Encoded value: ", v_gtp_encoded);
+  var PDU_GTPCv2 v_gtp_decoded := dec_PDU_GTPCv2(v_gtp_encoded);
+  log("Decoded: ", v_gtp_decoded);
+  if(not match(v_gtp_decoded,t_m_pdu_gtpcv2('B0'O,v_gtpcv2_pdu))) {
+    setverdict(fail);
+  } 
+  setverdict(pass);
+}
+  
+testcase tc_modifyBearerCommand() runs on ct_GTPv2{
+  var GTPCv2_PDUs v_gtpcv2_pdu := {
+    modifyBearerCommand := {
+      ambr := valueof(t_ambr),
+      bearerContextGrouped := valueof(t_bearerContextGrouped),
+      overloadControlInformationGrouped := { valueof(t_overloadControlInformationGrouped),  valueof(t_overloadControlInformationGrouped)},
+      fullyQualifiedTEID := omit,
+      privateExtension := omit
+    }
+  }
+  var PDU_GTPCv2 v_pdu_gtpcv2 := valueof(t_pdu_gtpcv2('40'O,v_gtpcv2_pdu));
+  log("Original: ", v_pdu_gtpcv2);
+  var octetstring v_gtp_encoded := enc_PDU_GTPCv2(v_pdu_gtpcv2);
+  log("Encoded value: ", v_gtp_encoded);
+  var PDU_GTPCv2 v_gtp_decoded := dec_PDU_GTPCv2(v_gtp_encoded);
+  log("Decoded: ", v_gtp_decoded);
+  if(not match(v_gtp_decoded,t_m_pdu_gtpcv2('40'O,v_gtpcv2_pdu))) {
+    setverdict(fail);
+  } 
+  setverdict(pass);
+}
+  
+testcase tc_modifyBearerFailureIndication() runs on ct_GTPv2{
+  var GTPCv2_PDUs v_gtpcv2_pdu := {
+    modifyBearerFailureIndication := {
+      cause := valueof(t_cause),
+      recovery := omit,
+      indicationFlags := valueof(t_indicationFlags),
+      overloadControlInformationGrouped := { valueof(t_overloadControlInformationGrouped),  valueof(t_overloadControlInformationGrouped)},
+      privateExtension := omit
+    }
+  }
+  var PDU_GTPCv2 v_pdu_gtpcv2 := valueof(t_pdu_gtpcv2('41'O,v_gtpcv2_pdu));
+  log("Original: ", v_pdu_gtpcv2);
+  var octetstring v_gtp_encoded := enc_PDU_GTPCv2(v_pdu_gtpcv2);
+  log("Encoded value: ", v_gtp_encoded);
+  var PDU_GTPCv2 v_gtp_decoded := dec_PDU_GTPCv2(v_gtp_encoded);
+  log("Decoded: ", v_gtp_decoded);
+  if(not match(v_gtp_decoded,t_m_pdu_gtpcv2('41'O,v_gtpcv2_pdu))) {
+    setverdict(fail);
+  } 
+  setverdict(pass);
+}
+
+testcase tc_deleteBearerFailureIndication2() runs on ct_GTPv2{
+  var GTPCv2_PDUs v_gtpcv2_pdu := {
+    deleteBearerFailureIndication := {
+      cause := valueof(t_cause),
+      bearerContextGrouped := {valueof(t_m_bearerContextGrouped)}, 
+      recovery := omit,
+      indicationFlags := valueof(t_indicationFlags),
+      overloadControlInformationGrouped := { valueof(t_overloadControlInformationGrouped),  valueof(t_overloadControlInformationGrouped)},
+      privateExtension := omit
+    }
+  }
+  var PDU_GTPCv2 v_pdu_gtpcv2 := valueof(t_pdu_gtpcv2('43'O,v_gtpcv2_pdu));
+  log("Original: ", v_pdu_gtpcv2);
+  var octetstring v_gtp_encoded := enc_PDU_GTPCv2(v_pdu_gtpcv2);
+  log("Encoded value: ", v_gtp_encoded);
+  var PDU_GTPCv2 v_gtp_decoded := dec_PDU_GTPCv2(v_gtp_encoded);
+  log("Decoded: ", v_gtp_decoded);
+  if(not match(v_gtp_decoded,t_m_pdu_gtpcv2('43'O,v_gtpcv2_pdu))) {
+    setverdict(fail);
+  } 
+  setverdict(pass);
+}
+
+testcase tc_updateBearerRequest() runs on ct_GTPv2{
+  var GTPCv2_PDUs v_gtpcv2_pdu := {
+    updateBearerRequest := {
+      bearerContextGrouped := {valueof(t_bearerContextGrouped)},
+      procedureTransactionID := omit,
+      protocolConfigOptions := omit,
+      apn_ambr := valueof(t_ambr),
+      changeReportingAction := omit,
+      cSG_InformationReportingAction := omit,
+      indicationFlags := omit,
+      heNBInformationReporting := omit,
+      csid := omit,
+      presenceReportingAreaAction := {valueof(t_presenceReportingAreaAction)},
+      loadControlInformationGrouped := { valueof(t_loadControlInformationGrouped),  valueof(t_loadControlInformationGrouped),valueof(t_loadControlInformationGrouped)},
+      overloadControlInformationGrouped := { valueof(t_overloadControlInformationGrouped),  valueof(t_overloadControlInformationGrouped)},
+      nBIFOMContainer:= valueof(t_nBIFOMContainer),
+      privateExtension := omit
+    }
+  }
+  var PDU_GTPCv2 v_pdu_gtpcv2 := valueof(t_pdu_gtpcv2('61'O,v_gtpcv2_pdu));
+  log("Original: ", v_pdu_gtpcv2);
+  var octetstring v_gtp_encoded := enc_PDU_GTPCv2(v_pdu_gtpcv2);
+  log("Encoded value: ", v_gtp_encoded);
+  var PDU_GTPCv2 v_gtp_decoded := dec_PDU_GTPCv2(v_gtp_encoded);
+  log("Decoded: ", v_gtp_decoded);
+  if(not match(v_gtp_decoded,t_m_pdu_gtpcv2('61'O,v_gtpcv2_pdu))) {
+    setverdict(fail);
+  } 
+  setverdict(pass);
+}
+  
+testcase tc_updateBearerResponse() runs on ct_GTPv2{
+  var GTPCv2_PDUs v_gtpcv2_pdu := {
+    updateBearerResponse := {
+      cause := valueof(t_cause),
+      bearerContextGrouped := {valueof(t_bearerContextGrouped)},
+      protocolConfigOptions := omit,
+      recovery := omit,
+      csid := omit,
+      indicationFlags := omit,  
+      uE_TimeZone := omit,
+      uLI := omit,
+      trustedWLANAccessNetworkIdentifier :=  valueof(t_trustedWLANAccessNetworkIdentifier),
+      overloadControlInformationGrouped := { valueof(t_overloadControlInformationGrouped),  valueof(t_overloadControlInformationGrouped)},
+      presenceReportingAreaInformation := {valueof(t_presenceReportingAreaInformation)},
+      iP_Addr := {valueof(t_IP_Address)},
+      tWANIdentifierTimestamp := valueof(t_tWANIdentifierTimestamp),
+      portNumber := omit,
+      nBIFOMContainer := valueof(t_nBIFOMContainer),
+      extendedProtocolConfigOptions := valueof(t_extendedProtocolConfigOptions),
+      privateExtension := omit
+    }
+  }
+  var PDU_GTPCv2 v_pdu_gtpcv2 := valueof(t_pdu_gtpcv2('62'O,v_gtpcv2_pdu));
+  log("Original: ", v_pdu_gtpcv2);
+  var octetstring v_gtp_encoded := enc_PDU_GTPCv2(v_pdu_gtpcv2);
+  log("Encoded value: ", v_gtp_encoded);
+  var PDU_GTPCv2 v_gtp_decoded := dec_PDU_GTPCv2(v_gtp_encoded);
+  log("Decoded: ", v_gtp_decoded);
+  if(not match(v_gtp_decoded,t_m_pdu_gtpcv2('62'O,v_gtpcv2_pdu))) {
+    setverdict(fail);
+  } 
+  setverdict(pass);
+}
+  
+testcase tc_deleteBearerCommand() runs on ct_GTPv2{
+  var GTPCv2_PDUs v_gtpcv2_pdu := {
+    deleteBearerCommand := {
+      bearerContextGrouped := {valueof(t_bearerContextGrouped)}, 
+      uli := omit,
+      uli_timestamp := omit,
+      ue_timezone := omit,
+      overloadControlInformationGrouped := { valueof(t_overloadControlInformationGrouped),  valueof(t_overloadControlInformationGrouped)},
+      fullyQualifiedTEID := omit,
+      secondary_RAT_UsageDataReport := omit,
+      privateExtension := omit
+    }
+  }
+  var PDU_GTPCv2 v_pdu_gtpcv2 := valueof(t_pdu_gtpcv2('42'O,v_gtpcv2_pdu));
+  log("Original: ", v_pdu_gtpcv2);
+  var octetstring v_gtp_encoded := enc_PDU_GTPCv2(v_pdu_gtpcv2);
+  log("Encoded value: ", v_gtp_encoded);
+  var PDU_GTPCv2 v_gtp_decoded := dec_PDU_GTPCv2(v_gtp_encoded);
+  log("Decoded: ", v_gtp_decoded);
+  if(not match(v_gtp_decoded,t_m_pdu_gtpcv2('42'O,v_gtpcv2_pdu))) {
+    setverdict(fail);
+  } 
+  setverdict(pass);
+}
+  
+testcase tc_deleteBearerFailureIndication() runs on ct_GTPv2{
+  var GTPCv2_PDUs v_gtpcv2_pdu := {
+    deleteBearerFailureIndication := {
+      cause := valueof(t_cause),
+      bearerContextGrouped := {valueof(t_bearerContextGrouped)}, 
+      recovery := omit,
+      indicationFlags := valueof(t_indicationFlags),
+      overloadControlInformationGrouped := { valueof(t_overloadControlInformationGrouped),  valueof(t_overloadControlInformationGrouped)},
+      privateExtension := omit
+    }
+  }
+  var PDU_GTPCv2 v_pdu_gtpcv2 := valueof(t_pdu_gtpcv2('43'O,v_gtpcv2_pdu));
+  log("Original: ", v_pdu_gtpcv2);
+  var octetstring v_gtp_encoded := enc_PDU_GTPCv2(v_pdu_gtpcv2);
+  log("Encoded value: ", v_gtp_encoded);
+  var PDU_GTPCv2 v_gtp_decoded := dec_PDU_GTPCv2(v_gtp_encoded);
+  log("Decoded: ", v_gtp_decoded);
+  if(not match(v_gtp_decoded,t_m_pdu_gtpcv2('43'O,v_gtpcv2_pdu))) {
+    setverdict(fail);
+  } 
+  setverdict(pass);
+}
+  
+testcase tc_releaseAccessBearersRequest() runs on ct_GTPv2{
+  var GTPCv2_PDUs v_gtpcv2_pdu := {
+    releaseAccessBearersRequest := {
+      listOfRABs := omit,
+      originatingNode := omit,
+      indicationFlags := valueof(t_indicationFlags),
+      secondary_RAT_UsageDataReport := omit,
+      privateExtension := omit
+    }
+  }
+  var PDU_GTPCv2 v_pdu_gtpcv2 := valueof(t_pdu_gtpcv2('AA'O,v_gtpcv2_pdu));
+  log("Original: ", v_pdu_gtpcv2);
+  var octetstring v_gtp_encoded := enc_PDU_GTPCv2(v_pdu_gtpcv2);
+  log("Encoded value: ", v_gtp_encoded);
+  var PDU_GTPCv2 v_gtp_decoded := dec_PDU_GTPCv2(v_gtp_encoded);
+  log("Decoded: ", v_gtp_decoded);
+  if(not match(v_gtp_decoded,t_m_pdu_gtpcv2('AA'O,v_gtpcv2_pdu))) {
+    setverdict(fail);
+  } 
+  setverdict(pass);
+}
+  
+testcase tc_releaseAccessBearersResponse() runs on ct_GTPv2{
+  var GTPCv2_PDUs v_gtpcv2_pdu := {
+    releaseAccessBearersResponse := {
+      cause := valueof(t_cause),
+      recovery := omit,
+      indicationFlags := valueof(t_indicationFlags),
+      loadControlInformationGrouped := valueof(t_loadControlInformationGrouped),
+      overloadControlInformationGrouped := valueof(t_overloadControlInformationGrouped),
+      privateExtension := omit
+    }
+  }
+  var PDU_GTPCv2 v_pdu_gtpcv2 := valueof(t_pdu_gtpcv2('AB'O,v_gtpcv2_pdu));
+  log("Original: ", v_pdu_gtpcv2);
+  var octetstring v_gtp_encoded := enc_PDU_GTPCv2(v_pdu_gtpcv2);
+  log("Encoded value: ", v_gtp_encoded);
+  var PDU_GTPCv2 v_gtp_decoded := dec_PDU_GTPCv2(v_gtp_encoded);
+  log("Decoded: ", v_gtp_decoded);
+  if(not match(v_gtp_decoded,t_m_pdu_gtpcv2('AB'O,v_gtpcv2_pdu))) {
+    setverdict(fail);
+  } 
+  setverdict(pass);
+}
+  
+testcase tc_stopPagingIndication() runs on ct_GTPv2{
+  var GTPCv2_PDUs v_gtpcv2_pdu := {
+    stopPagingIndication := {
+      iMSI := valueof(t_iMSI),            
+      privateExtension := omit
+    }
+  }
+  var PDU_GTPCv2 v_pdu_gtpcv2 := valueof(t_pdu_gtpcv2('49'O,v_gtpcv2_pdu));
+  log("Original: ", v_pdu_gtpcv2);
+  var octetstring v_gtp_encoded := enc_PDU_GTPCv2(v_pdu_gtpcv2);
+  log("Encoded value: ", v_gtp_encoded);
+  var PDU_GTPCv2 v_gtp_decoded := dec_PDU_GTPCv2(v_gtp_encoded);
+  log("Decoded: ", v_gtp_decoded);
+  if(not match(v_gtp_decoded,t_m_pdu_gtpcv2('49'O,v_gtpcv2_pdu))) {
+    setverdict(fail);
+  } 
+  setverdict(pass);
+}
+  
+testcase tc_modifyAccessBearersResponse() runs on ct_GTPv2{
+  var GTPCv2_PDUs v_gtpcv2_pdu := {
+    modifyAccessBearersResponse := {
+      cause := valueof(t_cause),
+      bearerContextGrouped := omit,
+      recovery := omit,
+      indicationFlags := valueof(t_indicationFlags),
+      loadControlInformationGrouped := valueof(t_loadControlInformationGrouped),
+      overloadControlInformationGrouped := valueof(t_overloadControlInformationGrouped),
+      privateExtension := omit
+    }
+  }
+
+  var PDU_GTPCv2 v_pdu_gtpcv2 := valueof(t_pdu_gtpcv2('D4'O,v_gtpcv2_pdu));
+  log("Original: ", v_pdu_gtpcv2);
+  var octetstring v_gtp_encoded := enc_PDU_GTPCv2(v_pdu_gtpcv2);
+  log("Encoded value: ", v_gtp_encoded);
+  var PDU_GTPCv2 v_gtp_decoded := dec_PDU_GTPCv2(v_gtp_encoded);
+  log("Decoded: ", v_gtp_decoded);
+  if(not match(v_gtp_decoded,t_m_pdu_gtpcv2('D4'O,v_gtpcv2_pdu))) {
+    setverdict(fail);
+  } 
+  setverdict(pass);
+}
+  
+testcase tc_forwardRelocationResponse() runs on ct_GTPv2{
+  var GTPCv2_PDUs v_gtpcv2_pdu:={
+    forwardRelocationResponse:= {
+      cause := valueof(t_cause),
+      fullyQualifiedTEID := omit,
+      indication := omit,
+      bearerContextGrouped := omit,
+      fullyQualifiedCause := omit,
+      transparentContainer := omit,
+      lDN := omit,
+      nodeName := omit,
+      nodeNumber := {valueof(t_nodeNumber)},
+      nodeIdentifier := {valueof(t_nodeIdentifier),valueof(t_nodeIdentifier)},
+      privateExtension := omit
+    }
+  }
+  var PDU_GTPCv2 v_pdu_gtpcv2 := valueof(t_pdu_gtpcv2('86'O,v_gtpcv2_pdu));
+  log("Original: ", v_pdu_gtpcv2);
+  var octetstring v_gtp_encoded := enc_PDU_GTPCv2(v_pdu_gtpcv2);
+  log("Encoded value: ", v_gtp_encoded);
+  var PDU_GTPCv2 v_gtp_decoded := dec_PDU_GTPCv2(v_gtp_encoded);
+  log("Decoded: ", v_gtp_decoded);
+  if(not match(v_gtp_decoded,t_m_pdu_gtpcv2('86'O,v_gtpcv2_pdu))) {
+    setverdict(fail);
+  } 
+  setverdict(pass);
+}
+  
+testcase tc_contextRequest() runs on ct_GTPv2{
+  var GTPCv2_PDUs v_gtpcv2_pdu:={
+    contextRequest:= {
+      iMSI := omit,
+      gUTI := omit,
+      uLI := omit,
+      pTMSI := omit,
+      pTMSI_Signature := omit,
+      complete_TAU_RequestMessage := omit,
+      address_and_TEID_for_ControlPlane := omit,
+      portNumber := omit,
+      rAT_Type := omit, 
+      indication := omit,
+      hop_Counter := omit,
+      target_PLMN_ID := omit,
+      lDN := omit,
+      nodeName := omit,
+      sGSNNumber := valueof(t_nodeNumber),
+      nodeIdentifier := {valueof(t_nodeIdentifier),valueof(t_nodeIdentifier)},
+      cIoT_OptimizationsSupportIndication := valueof(t_cIoT_OptimizationsSupportIndication),
+      privateExtension := omit
+    }
+  }
+  var PDU_GTPCv2 v_pdu_gtpcv2 := valueof(t_pdu_gtpcv2('82'O,v_gtpcv2_pdu));
+  log("Original: ", v_pdu_gtpcv2);
+  var octetstring v_gtp_encoded := enc_PDU_GTPCv2(v_pdu_gtpcv2);
+  log("Encoded value: ", v_gtp_encoded);
+  var PDU_GTPCv2 v_gtp_decoded := dec_PDU_GTPCv2(v_gtp_encoded);
+  log("Decoded: ", v_gtp_decoded);
+  if(not match(v_gtp_decoded,t_m_pdu_gtpcv2('82'O,v_gtpcv2_pdu))) {
+    setverdict(fail);
+  } 
+  setverdict(pass);
+}
+
+testcase tc_changeNotificationRequest() runs on ct_GTPv2{
+  var GTPCv2_PDUs v_gtpcv2_pdu:={
+    changeNotificationRequest:= {
+      iMSI := omit,            
+      mEI := omit,
+      indication := omit,
+      rAT_Type := valueof(t_ratType),
+      uLI := omit,
+      user_CSG_Information := omit,
+      gTPC_IP_Address := omit,
+      linkedBearerIdentity := omit,
+      presenceReportingAreaInformation := {valueof(t_presenceReportingAreaInformation)},
+      counter := omit,
+      secondary_RAT_UsageDataReport := omit,
+      privateExtension := omit
+    }
+  }
+  var PDU_GTPCv2 v_pdu_gtpcv2 := valueof(t_pdu_gtpcv2('26'O,v_gtpcv2_pdu));
+  log("Original: ", v_pdu_gtpcv2);
+  var octetstring v_gtp_encoded := enc_PDU_GTPCv2(v_pdu_gtpcv2);
+  log("Encoded value: ", v_gtp_encoded);
+  var PDU_GTPCv2 v_gtp_decoded := dec_PDU_GTPCv2(v_gtp_encoded);
+  log("Decoded: ", v_gtp_decoded);
+  if(not match(v_gtp_decoded,t_m_pdu_gtpcv2('26'O,v_gtpcv2_pdu))) {
+    setverdict(fail);
+  } 
+  setverdict(pass);
+}
+
+testcase tc_changeNotificationResponse() runs on ct_GTPv2{
+  var GTPCv2_PDUs v_gtpcv2_pdu:={
+    changeNotificationResponse:= {
+      iMSI := omit,            
+      mEI := omit,
+      cause := valueof(t_cause),
+      changeReportingAction := omit,
+      cSG_InformationReportingAction := omit,
+      presenceReportingAreaAction := {valueof(t_presenceReportingAreaAction)},
+      privateExtension := omit
+    }
+  }
+  var PDU_GTPCv2 v_pdu_gtpcv2 := valueof(t_pdu_gtpcv2('27'O,v_gtpcv2_pdu));
+  log("Original: ", v_pdu_gtpcv2);
+  var octetstring v_gtp_encoded := enc_PDU_GTPCv2(v_pdu_gtpcv2);
+  log("Encoded value: ", v_gtp_encoded);
+  var PDU_GTPCv2 v_gtp_decoded := dec_PDU_GTPCv2(v_gtp_encoded);
+  log("Decoded: ", v_gtp_decoded);
+  if(not match(v_gtp_decoded,t_m_pdu_gtpcv2('27'O,v_gtpcv2_pdu))) {
+    setverdict(fail);
+  } 
+  setverdict(pass);
+  v_gtpcv2_pdu.changeNotificationResponse.presenceReportingAreaAction := {valueof(t_presenceReportingAreaAction2) } 
+  v_pdu_gtpcv2 := valueof(t_pdu_gtpcv2('27'O,v_gtpcv2_pdu));
+  v_gtp_encoded := enc_PDU_GTPCv2(v_pdu_gtpcv2);
+  log("Encoded value: ", v_gtp_encoded);
+  v_gtp_decoded := dec_PDU_GTPCv2(v_gtp_encoded);
+  log("Decoded: ", v_gtp_decoded);
+  if(not match(v_gtp_decoded,t_m_pdu_gtpcv2('27'O,v_gtpcv2_pdu))) {
+    setverdict(fail);
+  } 
+  setverdict(pass);
+  
+}
+  
+testcase tc_contextResponse() runs on ct_GTPv2{
+  var GTPCv2_PDUs v_gtpcv2_pdu:={
+    contextResponse:= {
+      cause := valueof(t_cause),
+      iMSI := omit,
+      mM_Context := omit,
+      pDN_Connection := valueof(t_pDN_ConnectionGrouped_List),
+      fullyQualifiedTEID := omit,
+      nodeName := omit,
+      indication := omit,
+      traceInformation := omit,
+      iP_Addr := omit,
+      rFSP_Index := omit,               
+      uE_TimeZone := omit,
+      lDN := omit,
+      mDT_Configuration := valueof(t_mDT_Configuration),
+      user_CSG_Information := omit,
+      monitoringEventInformation := omit,
+      uEUsageType := omit,
+      mME_US_SCEF_PDN_Connection := valueof(t_sCEF_PDN_ConnectionGrouped_List),
+      rAT_Type := omit,
+      servingPLMNRateControl := omit,
+      counter := omit,
+      privateExtension := omit
+    }
+  }
+  var PDU_GTPCv2 v_pdu_gtpcv2 := valueof(t_pdu_gtpcv2('83'O,v_gtpcv2_pdu));
+  log("Original: ", v_pdu_gtpcv2);
+  var octetstring v_gtp_encoded := enc_PDU_GTPCv2(v_pdu_gtpcv2);
+  log("Encoded value: ", v_gtp_encoded);
+  var PDU_GTPCv2 v_gtp_decoded := dec_PDU_GTPCv2(v_gtp_encoded);
+  log("Decoded: ", v_gtp_decoded);
+  if(not match(v_gtp_decoded,t_m_pdu_gtpcv2('83'O,v_gtpcv2_pdu))) {
+    setverdict(fail);
+  } 
+  setverdict(pass);
+}
+  
+testcase tc_remoteUEReportNotification() runs on ct_GTPv2{
+  var GTPCv2_PDUs v_gtpcv2_pdu := {
+    remoteUEReportNotification := {
+      remoteUEContextGrouped := valueof(t_remoteUEContextGrouped),
+      privateExtension := omit
+    }
+  }
+  var PDU_GTPCv2 v_pdu_gtpcv2 := valueof(t_pdu_gtpcv2('28'O,v_gtpcv2_pdu));
+  log("Original: ", v_pdu_gtpcv2);
+  var octetstring v_gtp_encoded := enc_PDU_GTPCv2(v_pdu_gtpcv2);
+  log("Encoded value: ", v_gtp_encoded);
+  var PDU_GTPCv2 v_gtp_decoded := dec_PDU_GTPCv2(v_gtp_encoded);
+  log("Decoded: ", v_gtp_decoded);
+  if(not match(v_gtp_decoded,t_m_pdu_gtpcv2('28'O,v_gtpcv2_pdu))) {
+    setverdict(fail);
+  } 
+  setverdict(pass);
+}
+  
+testcase tc_remoteUEReportAcknowledge() runs on ct_GTPv2{
+  var GTPCv2_PDUs v_gtpcv2_pdu := {
+    remoteUEReportAcknowledge := {
+      cause := valueof(t_cause),
+      privateExtension := omit
+    }
+  }
+  var PDU_GTPCv2 v_pdu_gtpcv2 := valueof(t_pdu_gtpcv2('29'O,v_gtpcv2_pdu));
+  log("Original: ", v_pdu_gtpcv2);
+  var octetstring v_gtp_encoded := enc_PDU_GTPCv2(v_pdu_gtpcv2);
+  log("Encoded value: ", v_gtp_encoded);
+  var PDU_GTPCv2 v_gtp_decoded := dec_PDU_GTPCv2(v_gtp_encoded);
+  log("Decoded: ", v_gtp_decoded);
+  if(not match(v_gtp_decoded,t_m_pdu_gtpcv2('29'O,v_gtpcv2_pdu))) {
+    setverdict(fail);
+  } 
+  setverdict(pass);
+}
+
+control{
+  execute(tc_createSessionRequest());
+  execute(tc_createSessionResponse());
+  execute(tc_createBearerRequest());
+  execute(tc_createBearerResponse());
+  execute(tc_bearerResourceCommand());
+  execute(tc_bearerResourceFailureIndication());
+  execute(tc_modifyBearerRequest());
+  execute(tc_modifyBearerResponse());
+  execute(tc_deleteSessionRequest());
+  execute(tc_deleteBearerRequest());
+  execute(tc_deleteSessionResponse());
+  execute(tc_deleteBearerResponse());
+  execute(tc_downlinkDataNotification());
+  execute(tc_modifyBearerCommand());
+  execute(tc_modifyBearerFailureIndication());
+  execute(tc_updateBearerRequest());
+  execute(tc_updateBearerResponse());
+  execute(tc_deleteBearerCommand());
+  execute(tc_deleteBearerFailureIndication2());
+  execute(tc_deleteBearerFailureIndication());
+  execute(tc_releaseAccessBearersRequest());
+  execute(tc_releaseAccessBearersResponse());
+  execute(tc_stopPagingIndication());
+  execute(tc_modifyAccessBearersResponse());
+  execute(tc_forwardRelocationResponse());
+  execute(tc_contextRequest());
+  execute(tc_changeNotificationRequest());
+  execute(tc_changeNotificationResponse());
+  execute(tc_contextResponse());
+  execute(tc_remoteUEReportNotification());
+  execute(tc_remoteUEReportAcknowledge());
+};
+
+}
diff --git a/test/GTPv2_v15.2.0_CNL113870_test.tpd b/test/GTPv2_v15.2.0_CNL113870_test.tpd
new file mode 100644
index 0000000..56e6f45
--- /dev/null
+++ b/test/GTPv2_v15.2.0_CNL113870_test.tpd
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<TITAN_Project_File_Information version="1.0">
+  <ProjectName>GTPv2_v15.2.0_CNL113870_test</ProjectName>
+  <ReferencedProjects>
+    <ReferencedProject name="GTPv2_v15.2.0_CNL113870" projectLocationURI="../GTPv2_v15.2.0_CNL113870.tpd"/>
+  </ReferencedProjects>
+  <Files>
+    <FileResource projectRelativePath="GTPv2_Test.cfg" relativeURI="GTPv2_Test.cfg"/>
+    <FileResource projectRelativePath="GTPv2_Test.ttcn" relativeURI="GTPv2_Test.ttcn"/>
+  </Files>
+  <ActiveConfiguration>Default</ActiveConfiguration>
+  <Configurations>
+    <Configuration name="Default">
+      <ProjectProperties>
+        <MakefileSettings>
+          <generateInternalMakefile>true</generateInternalMakefile>
+          <GNUMake>true</GNUMake>
+          <incrementalDependencyRefresh>true</incrementalDependencyRefresh>
+          <targetExecutable>bin/GTPv2_v15.2.0_CNL113870_test</targetExecutable>
+          <buildLevel>Level 3 - Creating object files with dependency update</buildLevel>
+        </MakefileSettings>
+        <LocalBuildSettings>
+          <workingDirectory>bin</workingDirectory>
+        </LocalBuildSettings>
+      </ProjectProperties>
+    </Configuration>
+  </Configurations>
+</TITAN_Project_File_Information>