diff --git a/BSSGP_v13.0.0_CNL113833_LATEST/BSSGP_v13.0.0_CNL113833.tpd b/BSSGP_v13.0.0_CNL113833_LATEST/BSSGP_v13.0.0_CNL113833.tpd
new file mode 100644
index 0000000..caee934
--- /dev/null
+++ b/BSSGP_v13.0.0_CNL113833_LATEST/BSSGP_v13.0.0_CNL113833.tpd
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2016 Ericsson
+
+  The copyright to the computer  program(s) herein  is the property of Ericsson.
+  The program(s) may be used and/or copied only with the written permission
+  of Ericsson or in accordance with  the terms and conditions  stipulated in the
+  agreement/contract under which the program(s) has been supplied.
+
+
+   File:               BSSGP_v13.0.0_CNL113833.tpd
+   Description:        tpd project file
+   Rev:                R1A
+   Prodnr:             CNL 113 833
+
+ -->
+<TITAN_Project_File_Information version="1.0">
+  <ProjectName>BSSGP_v13.0.0_CNL113833</ProjectName>
+  <ReferencedProjects>
+    <ReferencedProject name="ProtocolModules_Common" projectLocationURI="../COMMON/ProtocolModules_Common.tpd"/>
+  </ReferencedProjects>
+  <Files>
+    <FileResource projectRelativePath="src/BSSGP_EncDec.cc" relativeURI="src/BSSGP_EncDec.cc"/>
+    <FileResource projectRelativePath="src/BSSGP_Types.ttcn" relativeURI="src/BSSGP_Types.ttcn"/>
+  </Files>
+  <ActiveConfiguration>Default</ActiveConfiguration>
+  <Configurations>
+    <Configuration name="Default">
+      <ProjectProperties>
+        <MakefileSettings>
+          <generateInternalMakefile>true</generateInternalMakefile>
+          <GNUMake>true</GNUMake>
+          <incrementalDependencyRefresh>true</incrementalDependencyRefresh>
+          <targetExecutable>bin/BSSGP_v13.0.0_CNL113833</targetExecutable>
+          <buildLevel>Level 3 - Creating object files with dependency update</buildLevel>
+        </MakefileSettings>
+        <LocalBuildSettings>
+          <workingDirectory>bin</workingDirectory>
+        </LocalBuildSettings>
+      </ProjectProperties>
+      <FolderProperties>
+        <FolderResource>
+          <FolderPath>doc</FolderPath>
+          <FolderProperties>
+            <ExcludeFromBuild>true</ExcludeFromBuild>
+          </FolderProperties>
+        </FolderResource>
+      </FolderProperties>
+    </Configuration>
+  </Configurations>
+</TITAN_Project_File_Information>
diff --git a/BSSGP_v13.0.0_CNL113833_LATEST/doc/documentation_note.txt b/BSSGP_v13.0.0_CNL113833_LATEST/doc/documentation_note.txt
new file mode 100644
index 0000000..6cec029
--- /dev/null
+++ b/BSSGP_v13.0.0_CNL113833_LATEST/doc/documentation_note.txt
@@ -0,0 +1,13 @@
+Please note that the storage of the documentation of the product has been 
+moved to the eridoc.ericsson.se from the ClearCase.
+
+You can access the documentation of the product via the following links:
+
+The documentation belongs to the R1A revision of the product
+can be found here:
+http://document.internal.ericsson.com/Download?DocNo=1095-CNL113833&Rev=A&Lang=EN&PRev=Y
+
+The documentation belongs to the latest revision of the product
+can be found here:
+http://document.internal.ericsson.com/Download?DocNo=1095-CNL113833&Rev=HIGHEST&Lang=EN&Status=FREE&PRev=Y
+
diff --git a/BSSGP_v13.0.0_CNL113833_LATEST/src/BSSGP_EncDec.cc b/BSSGP_v13.0.0_CNL113833_LATEST/src/BSSGP_EncDec.cc
new file mode 100644
index 0000000..b447a67
--- /dev/null
+++ b/BSSGP_v13.0.0_CNL113833_LATEST/src/BSSGP_EncDec.cc
@@ -0,0 +1,145 @@
+///////////////////////////////////////////////////////////////////////////////
+//                                                                           //
+// Copyright Test Competence Center (TCC) ETH 2016                           //
+//                                                                           //
+// The copyright to the computer  program(s) herein  is the property of TCC. //
+// The program(s) may be used and/or copied only with the written permission //
+// of TCC or in accordance with  the terms and conditions  stipulated in the //
+// agreement/contract under which the program(s) has been supplied.          //
+//                                                                           //
+///////////////////////////////////////////////////////////////////////////////
+//
+//  File:               BSSGP_EncDec.cc
+//  Rev:                R1A
+//  Prodnr:             CNL 113 833
+//  Contact:            http://ttcn.ericsson.se
+//  Reference:          3GPP TS 48.018 13.0.0
+
+#include "BSSGP_Types.hh"
+
+//static TTCN_Module BSSGP_EndDec("BSSGP_EncDec", __DATE__, __TIME__);
+
+namespace BSSGP__Types {
+
+
+OCTETSTRING enc__PDU__BSSGP(const PDU__BSSGP& pdu)
+{
+ TTCN_Buffer bb;
+
+ // CALCULATE WHICH LENGTH FORMAT SHOULD BE USED AND CHANGE SHORT LENGTH FORM
+ // TO LONG LENGTH FORM IF NECESSARY
+ if (pdu.get_selection() == PDU__BSSGP::ALT_pDU__BSSGP__DL__UNITDATA)
+ {
+  if( pdu.pDU__BSSGP__DL__UNITDATA().lLC__PDU().lLC__PDU().lengthof() > 127)
+    {
+      PDU__BSSGP pdu2(pdu);
+      pdu2.pDU__BSSGP__DL__UNITDATA().lLC__PDU().lengthIndicator().length2() =
+        pdu2.pDU__BSSGP__DL__UNITDATA().lLC__PDU().lLC__PDU().lengthof();
+      pdu2.encode(PDU__BSSGP_descr_ ,bb, TTCN_EncDec::CT_RAW);
+
+    }
+    else
+      pdu.encode(PDU__BSSGP_descr_ ,bb, TTCN_EncDec::CT_RAW);
+  }
+  else if(pdu.get_selection() == PDU__BSSGP::ALT_pDU__BSSGP__UL__UNITDATA)
+  {
+   if( pdu.pDU__BSSGP__UL__UNITDATA().lLC__PDU().lLC__PDU().lengthof() > 127)
+    {
+      PDU__BSSGP pdu2(pdu);
+      pdu2.pDU__BSSGP__UL__UNITDATA().lLC__PDU().lengthIndicator().length2() =
+        pdu2.pDU__BSSGP__UL__UNITDATA().lLC__PDU().lLC__PDU().lengthof();
+      pdu2.encode(PDU__BSSGP_descr_ ,bb, TTCN_EncDec::CT_RAW);
+    }
+    else
+      pdu.encode(PDU__BSSGP_descr_ ,bb, TTCN_EncDec::CT_RAW);
+  }
+
+  else if(pdu.get_selection() == PDU__BSSGP::ALT_pDU__BSSGP__DL__MBMS__UNITDATA)
+   {
+    if( pdu.pDU__BSSGP__DL__MBMS__UNITDATA().lLC__PDU().lLC__PDU().lengthof() > 127)
+     {
+       PDU__BSSGP pdu2(pdu);
+       pdu2.pDU__BSSGP__DL__MBMS__UNITDATA().lLC__PDU().lengthIndicator().length2() =
+         pdu2.pDU__BSSGP__DL__MBMS__UNITDATA().lLC__PDU().lLC__PDU().lengthof();
+       pdu2.encode(PDU__BSSGP_descr_ ,bb, TTCN_EncDec::CT_RAW);
+     }
+     else
+       pdu.encode(PDU__BSSGP_descr_ ,bb, TTCN_EncDec::CT_RAW);
+   }
+
+  else if(pdu.get_selection() == PDU__BSSGP::ALT_pDU__BSSGP__UL__MBMS__UNITDATA)
+   {
+    if( pdu.pDU__BSSGP__UL__MBMS__UNITDATA().lLC__PDU().lLC__PDU().lengthof() > 127)
+     {
+       PDU__BSSGP pdu2(pdu);
+       pdu2.pDU__BSSGP__UL__MBMS__UNITDATA().lLC__PDU().lengthIndicator().length2() =
+         pdu2.pDU__BSSGP__UL__MBMS__UNITDATA().lLC__PDU().lLC__PDU().lengthof();
+       pdu2.encode(PDU__BSSGP_descr_ ,bb, TTCN_EncDec::CT_RAW);
+     }
+     else
+       pdu.encode(PDU__BSSGP_descr_ ,bb, TTCN_EncDec::CT_RAW);
+   }
+
+  else
+    pdu.encode(PDU__BSSGP_descr_ ,bb, TTCN_EncDec::CT_RAW);
+
+  return OCTETSTRING (bb.get_len(), bb.get_data());
+}
+
+/*PDU__BSSGP dec__PDU__BSSGP(const OCTETSTRING& stream)
+{
+        PDU__BSSGP retv;
+        TTCN_Buffer bb;
+
+        bb.put_os(stream);
+
+        retv.decode(PDU__BSSGP_descr_, bb, TTCN_EncDec::CT_RAW);
+        return retv;
+}*/
+
+PDU__BSSGP dec__PDU__BSSGP(const OCTETSTRING& stream)
+{
+	if (TTCN_Logger::log_this_event(TTCN_Logger::DEBUG_ENCDEC)) {
+		TTCN_Logger::begin_event(TTCN_Logger::DEBUG_ENCDEC);
+		TTCN_Logger::log_event_str("dec_PDU_BSSGP(): Stream before decoding: ");
+		stream.log();
+		TTCN_Logger::end_event();
+	}
+	TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_DEFAULT);
+	TTCN_EncDec::clear_error();
+	TTCN_Buffer ttcn_buffer(stream);
+	PDU__BSSGP ret_val;
+	ret_val.decode(PDU__BSSGP_descr_, ttcn_buffer, TTCN_EncDec::CT_RAW);
+
+	if (TTCN_Logger::log_this_event(TTCN_Logger::DEBUG_ENCDEC)) {
+		TTCN_Logger::begin_event(TTCN_Logger::DEBUG_ENCDEC);
+		TTCN_Logger::log_event_str("dec_PDU_BSSGP(): Decoded @BSSGP_Types.PDU_BSSGP: ");
+		ret_val.log();
+		TTCN_Logger::end_event();
+	}
+if (TTCN_EncDec::get_last_error_type() == TTCN_EncDec::ET_NONE) {
+	if (ttcn_buffer.get_pos() < ttcn_buffer.get_len() && TTCN_Logger::log_this_event(TTCN_WARNING)) {
+		ttcn_buffer.cut();
+		OCTETSTRING remaining_stream;
+		ttcn_buffer.get_string(remaining_stream);
+		TTCN_Logger::begin_event(TTCN_WARNING);
+		TTCN_Logger::log_event_str("dec_PDU_BSSGP(): Warning: Data remained at the end of the stream after successful decoding: ");
+		remaining_stream.log();
+		TTCN_Logger::end_event();
+	}
+	}
+if(ret_val.get_selection()== PDU__BSSGP::ALT_pDU__BSSGP__PS__HANDOVER__REQUEST)
+{
+	if(!ret_val.pDU__BSSGP__PS__HANDOVER__REQUEST().target__Cell__Identifier().ispresent()){
+		Cell__Identifier cell;
+		cell = ret_val.pDU__BSSGP__PS__HANDOVER__REQUEST().source__Cell__Identifier();
+		ret_val.pDU__BSSGP__PS__HANDOVER__REQUEST().target__Cell__Identifier() = cell;
+		//ret_val.pDU__BSSGP__PS__HANDOVER__REQUEST().source__Cell__Identifier().clean_up();
+		ret_val.pDU__BSSGP__PS__HANDOVER__REQUEST().source__Cell__Identifier()= OMIT_VALUE;
+
+	} }
+return ret_val;
+}
+
+
+}//namespace
diff --git a/BSSGP_v13.0.0_CNL113833_LATEST/src/BSSGP_Types.ttcn b/BSSGP_v13.0.0_CNL113833_LATEST/src/BSSGP_Types.ttcn
new file mode 100644
index 0000000..7172862
--- /dev/null
+++ b/BSSGP_v13.0.0_CNL113833_LATEST/src/BSSGP_Types.ttcn
@@ -0,0 +1,4419 @@
+///////////////////////////////////////////////////////////////////////////////
+//                                                                           //
+// Copyright Test Competence Center (TCC) ETH 2016                           //
+//                                                                           //
+// The copyright to the computer  program(s) herein  is the property of TCC. //
+// The program(s) may be used and/or copied only with the written permission //
+// of TCC or in accordance with  the terms and conditions  stipulated in the //
+// agreement/contract under which the program(s) has been supplied.          //
+//                                                                           //
+///////////////////////////////////////////////////////////////////////////////
+//
+//  File:               BSSGP_Types.ttcn
+//  Rev:                R1A
+//  Prodnr:             CNL 113 833
+//  Contact:            http://ttcn.ericsson.se
+//  Reference:          3GPP TS 48.018 13.0.0
+
+
+module BSSGP_Types
+{    
+
+import from General_Types all;
+
+external function enc_PDU_BSSGP(in PDU_BSSGP pdu) return octetstring;
+
+external function dec_PDU_BSSGP(in octetstring stream) return PDU_BSSGP;
+
+external function enc_PDU_BSSGP_fast(in PDU_BSSGP pdu, out octetstring stream)
+with { extension "prototype(fast) encode(RAW)" }
+
+external function dec_PDU_BSSGP_backtrack(in octetstring stream, out PDU_BSSGP pdu) return integer
+with { extension "prototype(backtrack) decode(RAW)" }
+
+
+//-----------------------------------------------------------------------------
+// INFORMATION ELEMENTS
+//-----------------------------------------------------------------------------
+type union LIN2_2a
+{
+  integer length1,
+  integer length2
+} with {
+  variant (length1) "FIELDLENGTH(7)";
+  variant (length2) "FIELDLENGTH(15)";
+  variant (length2) "BYTEORDER(last)";
+  variant (length1,length2) "FIELDORDER(msb)";
+}   
+      
+// 11.3.1           
+type record Alignment_octets
+{
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,
+  octetstring            spare_octet  length(0..3)
+} with {
+  variant "PRESENCE(iEI = '00'O)";
+  variant (lengthIndicator) "LENGTHTO (spare_octet)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+// 11.3.2
+type record Bmax_default_MS
+{
+  OCT1                    iEI,
+  BIT1                    ext,
+  LIN2_2a                 lengthIndicator, 
+  OCT2                    bmax  // could be changed to integer input if simpler
+} with { 
+  variant "PRESENCE(iEI = '01'O)";
+  variant (lengthIndicator) "LENGTHTO (bmax)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};        
+
+// 11.3.3
+type record BSS_Area_Indication
+{
+ OCT1                   iEI,
+ BIT1                   ext,
+ LIN2_2a                lengthIndicator,
+ OCT1                   bSS_indicator
+} with { 
+  variant "PRESENCE(iEI = '02'O)";
+  variant (lengthIndicator) "LENGTHTO (bSS_indicator)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+// 11.3.4
+type record Bucket_Leak_Rate
+{
+ OCT1                   iEI,
+ BIT1                   ext,
+ LIN2_2a                lengthIndicator,
+ OCT2                   r_Value // could be changed to integer input if simpler
+} with {
+  variant "PRESENCE(iEI = '03'O)";
+  variant (lengthIndicator) "LENGTHTO (r_Value)";
+  variant (lengthIndicator) "CROSSTAG( length1,   ext = '1'B;
+                                       length2,   ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+// 11.3.5
+type record BVC_Bucket_Size
+{
+ OCT1                   iEI,
+ BIT1                   ext,
+ LIN2_2a                lengthIndicator,
+ OCT2                   bmax  
+} with { 
+  variant "PRESENCE(iEI = '05'O)";
+  variant (lengthIndicator) "LENGTHTO (bmax)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+// 11.3.6
+type record BVCI
+{
+ OCT1                   iEI,
+ BIT1                   ext,
+ LIN2_2a                lengthIndicator,
+ OCT2                   unstructured_value
+} with { 
+  variant "PRESENCE(iEI = '04'O)";
+  variant (lengthIndicator) "LENGTHTO (unstructured_value)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+// 11.3.7
+type record BVC_Measurement
+{
+ OCT1                   iEI,
+ BIT1                   ext,
+ LIN2_2a                lengthIndicator,
+ OCT2                   delay_Value  
+                                   
+} with { 
+  variant "PRESENCE(iEI = '06'O)";
+  variant (lengthIndicator) "LENGTHTO (delay_Value)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+ 
+// 11.3.8
+type record Cause_BSSGP 
+ {
+ OCT1                   iEI,
+ BIT1                   ext,
+ LIN2_2a                lengthIndicator,
+ OCT1                   cause_Value
+ } with { 
+  variant "PRESENCE(iEI = '07'O)";
+  variant (lengthIndicator) "LENGTHTO (cause_Value)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+ 
+// 11.3.9
+type record Cell_Identifier
+{
+ OCT1                   iEI,
+ BIT1                   ext,
+ LIN2_2a                lengthIndicator,
+ HEX1                   mccDigit1 ,
+ HEX1                   mccDigit2 ,
+ HEX1                   mccDigit3 ,
+ HEX1                   mncDigit3 ,
+ HEX1                   mncDigit1 ,
+ HEX1                   mncDigit2 ,
+ OCT2                   lac,
+ OCT1                   rac,    
+ OCT2                   cI_value
+} with { 
+  variant "PRESENCE(iEI = '08'O)";
+      variant (lengthIndicator) 
+     "LENGTHTO(mccDigit1,mccDigit2,mccDigit3,mncDigit3,mncDigit1,
+               mncDigit2,lac,rac,cI_value)";
+      variant (lengthIndicator) "CROSSTAG( length1,         ext = '1'B;
+                                           length2,         ext = '0'B;)";
+      variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+
+type record Cell_Identifier_V
+{ 
+ HEX1                   mccDigit1,
+ HEX1                   mccDigit2,
+ HEX1                   mccDigit3,
+ HEX1                   mncDigit3,
+ HEX1                   mncDigit1,
+ HEX1                   mncDigit2,
+ OCT2                   lac,
+ OCT1                   rac,    
+ OCT2                   cI_value
+};
+
+// 11.3.10
+// 29.018, 44.018
+type record Channel_needed
+{
+ OCT1                    iEI,
+ BIT1                    ext,
+ LIN2_2a                 lengthIndicator,
+ Channel_Needed_Value    channel_Needed_Value
+} with { 
+  variant "PRESENCE(iEI = '09'O)";
+  variant (lengthIndicator) "LENGTHTO (channel_Needed_Value)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+type record Channel_Needed_Value
+{
+  BIT2   channel_1,
+  BIT2   channel_2,
+  BIT4   channelNeededIEI     //44.018
+}
+
+// 11.3.11
+type record DRX_Parameters
+{
+ OCT1                    iEI,
+ BIT1                    ext,
+ LIN2_2a                 lengthIndicator,
+ OCT1                    splitPG_CycleCode,
+ BIT3                    nonDRXTimer,
+ BIT1                    splitOnCCCH,
+ BIT4                    cnSpecificDRXCycleLength
+} with { 
+  variant "PRESENCE(iEI = '0A'O)";
+  variant (lengthIndicator) 
+                "LENGTHTO (splitPG_CycleCode,nonDRXTimer,splitOnCCCH,
+                   cnSpecificDRXCycleLength)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+        };        
+
+// 11.3.12
+type record EMLPP_Priority_BSSGP
+{
+ OCT1                    iEI,
+ BIT1                    ext,
+ LIN2_2a                 lengthIndicator,
+ BIT3                    callPriority,
+ BIT5                    spare
+} with { 
+  variant "PRESENCE(iEI = '0B'O)";
+  variant (lengthIndicator) "LENGTHTO (callPriority,spare)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+        };
+        
+// 11.3.13
+type record Flush_Action
+{
+ OCT1                    iEI,
+ BIT1                    ext,
+ LIN2_2a                 lengthIndicator,
+ OCT1                    actionValue
+} with { 
+  variant "PRESENCE(iEI = '0C'O)";
+  variant (lengthIndicator) "LENGTHTO (actionValue)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+        };
+
+
+// 11.3.14
+type record IMSI_BSSGP
+{         
+ OCT1                    iEI,
+ BIT1                    ext,
+ LIN2_2a                 lengthIndicator,
+ BIT3                    type_of_Identity,
+ BIT1                    oddevenIndicator,      // '1'B or '0'B
+ hexstring               digits     length(5..15)                                                                       
+} with { 
+  variant "PRESENCE(iEI = '0D'O)";
+  variant (lengthIndicator) "LENGTHTO (type_of_Identity,
+                                             oddevenIndicator,digits)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,   ext = '0'B;)"; 
+              //variant (fillerDigit) "PRESENCE (oddevenIndicator   = '0'B) ";
+  variant (digits) "HEXORDER(low)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+  variant "PADDING(yes)";
+  variant "PADDING_PATTERN('1'B)"
+                
+        };
+                
+// 11.3.15
+//NOTE: lengthIndicator-short form will be converted to long form 
+// if needed during encoding
+type record LLC_PDU
+{
+ OCT1                   iEI,
+ BIT1                   ext,
+ LIN2_2a                lengthIndicator,
+ octetstring            lLC_PDU  // Note: this is divided into 2 parts in spec!
+} with { 
+  variant "PRESENCE(iEI = '0E'O)";
+  variant (lengthIndicator) "LENGTHTO (lLC_PDU)";
+  variant (lengthIndicator) "CROSSTAG( length1,         ext = '1'B;
+                                       length2,         ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+// 11.3.16
+type record LLC_Frames_Discarded
+{
+ OCT1                    iEI,
+ BIT1                    ext,
+ LIN2_2a                 lengthIndicator,
+ hexstring               number_of_frames_discarded length (2)
+ } with { 
+  variant "PRESENCE(iEI = '0F'O)";
+  variant (lengthIndicator) "LENGTHTO (number_of_frames_discarded)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+    
+// 11.3.17
+type record Location_Area
+{
+ OCT1                   iEI,
+ BIT1                   ext,
+ LIN2_2a                lengthIndicator,
+ HEX1                   mccDigit1,
+ HEX1                   mccDigit2,
+ HEX1                   mccDigit3,
+ HEX1                   mncDigit3,
+ HEX1                   mncDigit1,
+ HEX1                   mncDigit2,
+ OCT2                   lac
+} with { 
+  variant "PRESENCE(iEI = '10'O)";
+  variant (lengthIndicator) "LENGTHTO (mccDigit1,mccDigit2,mccDigit3,
+                                 mncDigit3,mncDigit1,mncDigit2,lac)";
+  variant (lengthIndicator) "CROSSTAG( length1,         ext = '1'B;
+                                       length2,         ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+// 11.3.18
+type record LSA_Identifier_List_BSSGP
+{
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,
+  octetstring            lSA_Identifier_List   //  encoded LSA Identifier List
+} with { 
+  variant "PRESENCE(iEI = '26'O)";
+  variant (lengthIndicator) "LENGTHTO (lSA_Identifier_List)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+
+// 11.3.19
+type record LSA_Information_BSSGP
+{
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,
+  LSA_Information        lSA_Information   //  encoded LSA Information 48.008
+} with { 
+  variant "PRESENCE(iEI = '27'O)";
+  variant (lengthIndicator) "LENGTHTO (lSA_Information)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+type record LSA_Information     //  encoded LSA Information 48.008
+{
+  BIT1                                      lSA_Only,
+  BIT7                                      spare,
+  LSA_Identification_and_Attributes_List    lSA_Identification_and_Attributes_List
+}
+
+type record of LSA_Identification_and_Attributes LSA_Identification_and_Attributes_List; 
+
+type record LSA_Identification_and_Attributes
+{
+   BIT4                 priority,
+   BIT1                 pref,
+   BIT1                 act,
+   BIT2                 spare, 
+   OCT3                 lSA_ID
+}
+
+
+// 11.3.20
+type record Mobile_Id_BSSGP
+{
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,
+  MobileIdentityV_BSSGP  mobile_Identity
+} with { 
+  variant "PRESENCE(iEI = '11'O)";
+  variant (lengthIndicator) "LENGTHTO (mobile_Identity)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+// MobileIdentityV structure copied from 24.008 MobileL3
+type record MobileIdentityV_BSSGP
+{
+  BIT3                               typeOfIdentity,
+  OddEvenInd_Identity_BSSGP          oddEvenInd_identity
+} with {
+  variant (oddEvenInd_identity) "CROSSTAG
+  (
+    imei,                     typeOfIdentity ='010'B;
+    imsi,                     typeOfIdentity ='001'B;
+    imei_sv,                  typeOfIdentity ='011'B;  
+  )"
+};
+
+type union OddEvenInd_Identity_BSSGP
+{
+  IMSI_MobileIdentityV                     imsi,  
+  IMEI_MobileIdentityV                     imei,     
+  IMEI_SV_MobileIdentityV                  imei_sv
+};
+
+type record IMSI_MobileIdentityV
+{
+  BIT1               oddevenIndicator,       // '1'B or '0'B
+  hexstring          digits  length(5..15),
+  BIT4               fillerDigit  optional   // B'1111, fillerDigit is present
+  // if oddevenIndicator=0
+}
+with
+{
+  variant (fillerDigit) "PRESENCE (oddevenIndicator   = '0'B) ";
+};
+
+type record IMEI_MobileIdentityV
+{
+  BIT1               oddevenIndicator,   // '1'B
+  hexstring          digits  length(15)
+};
+
+type record IMEI_SV_MobileIdentityV
+{
+  BIT1               oddevenIndicator,  // '0'B
+  hexstring          digits length(16),
+  BIT4               fillerDigit    // filler '1111'B
+};
+
+// 11.3.21
+type record MS_Bucket_Size
+{
+ OCT1                    iEI,
+ BIT1                    ext,
+ LIN2_2a                 lengthIndicator,
+ OCT2                    bmax
+} with { 
+  variant "PRESENCE(iEI = '12'O)";
+  variant (lengthIndicator) "LENGTHTO (bmax)";
+  variant (lengthIndicator) "CROSSTAG( length1,         ext = '1'B;
+                                       length2,         ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+
+// 11.3.22
+// Note : structure from 24.008 Mobile L3
+type record MS_Radio_Access_Capability
+{
+ OCT1                   iEI,
+ BIT1                   ext,
+ LIN2_2a                lengthIndicator,
+ MSRadioAccessCapabilityV_BSSGP  mSRadioAccessCapabilityV_BSSGP
+} with { 
+  variant "PRESENCE(iEI = '13'O)";
+  variant (lengthIndicator) "LENGTHTO (mSRadioAccessCapabilityV_BSSGP)";
+  variant (lengthIndicator) "CROSSTAG( length1,         ext = '1'B;
+                                       length2,         ext = '0'B;)";
+  variant /*(ext,lengthIndicator)*/ "FIELDORDER(msb)";
+  variant "PADDING(yes)"
+};
+             
+type record of MSRACapabilityValuesRecord_BSSGP MSRadioAccessCapabilityV_BSSGP
+with { variant "EXTENSION_BIT(reverse)";variant "FIELDORDER(msb)" };
+
+
+type record MSRACapabilityValuesRecord_BSSGP
+{
+  MSRACapabilityValues_BSSGP   mSRACapabilityValues,
+  BIT1                         presenceBitMSRACap
+} with { variant "FIELDORDER(msb)" };
+
+
+type union MSRACapabilityValues_BSSGP
+{
+  MSRACapabilityValuesExclude1111_BSSGP        mSRACapabilityValuesExclude1111,
+  MSRACapabilityValues1111_BSSGP               mSRACapabilityValues1111
+} with { variant "FIELDORDER(msb)" };
+
+
+type record MSRACapabilityValuesExclude1111_BSSGP
+{
+  BIT4                               accessTechnType,
+  AccessCapabilitiesStruct_BSSGP     accessCapabilities
+} with {
+  variant "PRESENCE (
+      accessTechnType = '0000'B,     // GSM P
+      accessTechnType = '0001'B,     // GSM E
+      accessTechnType = '0010'B,     // GSM R
+      accessTechnType = '0011'B,     // GSM 1800
+      accessTechnType = '0100'B,     // GSM190
+      accessTechnType = '0101'B,     // GSM 450
+      accessTechnType = '0110'B,     // GSM480
+      accessTechnType = '0111'B,     // GSM 480
+      accessTechnType = '1000'B,     // GSM 700
+      accessTechnType = '1001'B,     // GSM T 310
+      accessTechnType = '1010'B,     // GSM T 410
+      accessTechnType = '1011'B      // GSM T 900
+  )"
+  variant "FIELDORDER(msb)"
+};
+
+
+// Access Capabilities Struct
+type record AccessCapabilitiesStruct_BSSGP
+{
+  integer                            lengthIndicator,
+  AccessCapabilities_BSSGP           accessCapabilities,
+  // spare_bits "expands to the indicated length",
+  // i.e. 24.008 spec puts no restriction on number
+  // of spare_bits.  The only restriction is that the whole
+  // MS Radio Access Capability  IE is less than 52 octets
+  bitstring                    spare_bits              optional
+} with {
+  variant (lengthIndicator) "FIELDLENGTH(7)";
+  variant (lengthIndicator) "LENGTHTO(accessCapabilities,spare_bits)";
+  variant (lengthIndicator) "UNIT(bits)";
+  variant "FIELDORDER(msb)";
+  variant (lengthIndicator) "BYTEORDER(last)";
+}
+
+
+//Access Capabilities
+type record AccessCapabilities_BSSGP
+{
+  BIT3                         rfPowerCapability,
+  BIT1                         presenceBitA5,
+  A5BITS_BSSGP                 a5bits               optional,
+  BIT1                         esind,
+  BIT1                         psbit,
+  BIT1                         vgcs,
+  BIT1                         vbs,
+  BIT1                         presenceBitMultislot,
+  MultislotCap_BSSGP           multislotcap         optional,
+  AccessCapAdditionsAfterRel97_BSSGP accessCapAdditionsAfterRel97 optional //opt because of V97
+  //Note: AccessCapAdditionsAfterRel97 can include:
+  // Rel99 or
+  // Rel99 + Rel4 or
+  // Rel99 + Rel4 + Rel5 or
+  // Rel99 + Rel4 + Rel5  + Rel6
+} with {
+  variant "FIELDORDER(msb)";
+  variant (a5bits)               "PRESENCE(presenceBitA5 = '1'B)";
+  variant (multislotcap)         "PRESENCE(presenceBitMultislot = '1'B)";
+}
+
+
+type record AccessCapAdditionsAfterRel97_BSSGP
+{
+  AccessCapAdditionsRel99_BSSGP                accessCapAdditionsRel99,
+  AccessCapAdditionsAfterRel99_BSSGP           accessCapAdditionsAfterRel99 optional
+} with {
+  variant "FIELDORDER(msb)";
+}
+
+
+type record AccessCapAdditionsRel99_BSSGP
+{
+  BIT1               presenceBitPskpow,
+  BIT2               pskpowercap                     optional,
+  BIT1               compactIntMeasurCap,
+  BIT1               revisionLevelInd,
+  BIT1               umtsfddRadAccTechCap,
+  BIT1               umtstddRadAccTechCap,
+  BIT1               cdma2kRadAccTechCap
+} with {
+  variant "FIELDORDER(msb)";
+  variant (pskpowercap) "PRESENCE(presenceBitPskpow = '1'B)";
+}
+
+
+type record AccessCapAdditionsAfterRel99_BSSGP
+{
+  AccessCapAdditionsRel4_BSSGP       accessCapAdditionsRel4,
+  AccessCapAdditionsAfterRel4_BSSGP  accessCapAdditionsAfterRel4 optional
+} with {
+  variant "FIELDORDER(msb)";
+}
+
+
+type record AccessCapAdditionsRel4_BSSGP
+{
+  BIT1                    umts128RadAccTechCap,
+  BIT1                    geranFeaturePackage,
+  BIT1                    presenceBitExtendedDTM,
+  ExtendedDTM_BSSGP       extendedDTM                       optional,
+  BIT1                    modulationBasedMultislotClass
+} with {
+  variant "FIELDORDER(msb)";
+  variant (extendedDTM)          "PRESENCE(presenceBitExtendedDTM = '1'B)";
+}
+
+
+type record AccessCapAdditionsAfterRel4_BSSGP
+{
+  AccessCapAdditionsRel5_BSSGP       accessCapAdditionsRel5, 
+  AccessCapAdditionsAfterRel5_BSSGP  accessCapAdditionsAfterRel5 optional
+} with {
+  variant "FIELDORDER(msb)";
+}
+
+
+type record AccessCapAdditionsRel5_BSSGP
+{
+  BIT1                     presenceBitHighMultislotCapability,
+  BIT2                     highMultislotCapability            optional,
+  BIT1                     presenceBitGeranIuModeCapability,
+  GeranIuModeCap_BSSGP     geranIuModeCap                     optional,
+  BIT2                     gMSKMultislotPowerProfile,
+  BIT2                     eightPSKMultislotPowerProfile
+} with {
+  variant "FIELDORDER(msb)";
+  variant (highMultislotCapability)
+  "PRESENCE(presenceBitHighMultislotCapability = '1'B)"
+  variant (geranIuModeCap)"PRESENCE(presenceBitGeranIuModeCapability = '1'B)"
+}
+
+
+type record GeranIuModeCap_BSSGP
+{
+  integer                      lengthIndicator,
+  BIT1                         fLOIuCapability,
+  bitstring                    spare_bits
+  // spare_bits "expands to the indicated length",
+  // i.e. 24.008 spec puts no restriction on number
+  // of spare_bits.  The only restriction is that the whole
+  // MS Radio Access Capability  IE is less than 52 octets
+} with {
+  variant "FIELDORDER(msb)";
+  variant (lengthIndicator) "FIELDLENGTH(4)";
+  variant (lengthIndicator) "LENGTHTO(fLOIuCapability,spare_bits)";
+  variant (lengthIndicator) "UNIT(bits)";
+}
+
+type record AccessCapAdditionsAfterRel5_BSSGP
+{
+  AccessCapAdditionsRel6_BSSGP     accessCapAdditionsRel6,
+  AccessCapAdditionsRel7_BSSGP     accessCapAdditionsAfterRel6 optional  
+} with {
+  variant "FIELDORDER(msb)";
+}
+
+type record AccessCapAdditionsRel6_BSSGP
+{
+  BIT1                              multipleTBFCapability,
+  BIT2                              downlinkAdvancedReceiverPerformance,
+  BIT1                              extendedRLCMACCtrlMsgSegmentationCap,
+  BIT1                              dTMEnhancementsCapability,
+  BIT1                              presenceBitDTMGPRSHighMultiSlotClass,
+  DTMGPRSHighMultiSlotClass_BSSGP   dTMGPRSHighMultiSlotClass optional,
+  BIT1                              pSHandoverCapability
+} with {
+  variant "FIELDORDER(msb)";
+  variant (dTMGPRSHighMultiSlotClass)
+  "PRESENCE(presenceBitDTMGPRSHighMultiSlotClass = '1'B)"
+}
+
+
+type record DTMGPRSHighMultiSlotClass_BSSGP
+{
+  BIT3               dTMGPRSHighMultiSlotClassValue,
+  BIT1               presenceBitDTMEGPRSHighMultiSlotClass,
+  BIT3               dTMEGPRSHighMultiSlotClassValue optional
+} with {
+  variant "FIELDORDER(msb)";
+  variant (dTMEGPRSHighMultiSlotClassValue)
+  "PRESENCE(presenceBitDTMEGPRSHighMultiSlotClass = '1'B)"
+
+}
+
+
+type record AccessCapAdditionsRel7_BSSGP
+{
+  BIT1                         dTMHandoverCapability,
+  BIT1                         presenceBitDownlinkDualCarrier, 
+  DownlinkDualCarrier_BSSGP    downlinkDualCarrier,
+  BIT1                         flexibleTimeslotAssignment,
+  BIT1                         gANPSHandoverCapability,
+  BIT1                         rLCNonPersistentMode,
+  BIT1                         reducedLatencyEGPRSCapability 
+} with {
+  variant "FIELDORDER(msb)";
+  variant (downlinkDualCarrier)
+  "PRESENCE(presenceBitDownlinkDualCarrier = '1'B)"
+}
+  
+
+type record DownlinkDualCarrier_BSSGP
+{
+  BIT3  multislotCapReductionforDownLinkDualCarrier,
+  BIT1  downlinkDualCarrierforDTMCapability
+} with { variant "FIELDORDER(msb)" };
+
+
+type record  ExtendedDTM_BSSGP
+{
+  BIT2               ExtendedDTM_GPRSMultislot,
+  BIT2               ExtendedDTM_EGPRSMultislot
+} with { variant "FIELDORDER(msb)" };
+
+
+//MultislotCap
+type record  MultislotCap_BSSGP
+{
+  BIT1                                   presenceBitHscsd,
+  BIT5                                   hscsdmultislotclass      optional,
+  BIT1                                   presenceBitGprs,
+  MultislotCap_GPRS_BSSGP                gprsmultislot           optional,
+  BIT1                                   presenceBitSms,
+  MultislotCap_SMS_BSSGP                 multislotCap_SMS        optional,
+  MultislotCapAdditionsAfterRel97_BSSGP  multislotCapAdditionsAfterRel97 optional
+} with {
+  variant "FIELDORDER(msb)";
+  variant (hscsdmultislotclass)     "PRESENCE(presenceBitHscsd = '1'B)";
+  variant (gprsmultislot)          "PRESENCE(presenceBitGprs = '1'B)";
+  variant (multislotCap_SMS)       "PRESENCE(presenceBitSms = '1'B)";
+
+}
+
+
+type record MultislotCapAdditionsAfterRel97_BSSGP
+{
+  BIT1                                   presenceBitEcsdmulti,
+  BIT5                                   ecsdmultislotclass      optional,
+  BIT1                                   presenceBitEgprsmulti,
+  MultislotCap_EGPRS_BSSGP               multislotCap_EGPRS      optional,
+  BIT1                                   presenceBitDtmGprsmulti,
+  MultislotCap_dtmgprsmultislotsubclass_BSSGP  
+                            multislotCapdtmgprsmultislotsubclass optional
+} with {
+  variant "FIELDORDER(msb)";
+  variant (ecsdmultislotclass)     "PRESENCE(presenceBitEcsdmulti = '1'B)";
+  variant (multislotCap_EGPRS)     "PRESENCE(presenceBitEgprsmulti = '1'B)" ;
+  variant (multislotCapdtmgprsmultislotsubclass)
+  "PRESENCE(presenceBitDtmGprsmulti = '1'B)"
+}
+
+
+type record MultislotCap_GPRS_BSSGP
+{
+  BIT5               gprsmultislotclass,
+  BIT1               gprsextendeddynalloccap
+} with { variant "FIELDORDER(msb)" };
+
+
+type record MultislotCap_SMS_BSSGP
+{
+  BIT4               smsValue,
+  BIT4               smValue
+} with { variant "FIELDORDER(msb)" };
+
+
+type record  MultislotCap_EGPRS_BSSGP
+{
+  BIT5               egprsmultislotclass,
+  BIT1               egprsextendeddynalloccap
+}  with { variant "FIELDORDER(msb)" };
+
+type record MultislotCap_dtmgprsmultislotsubclass_BSSGP
+{
+  BIT2               dtmgprsmultislotsubclass,
+  BIT1               singleSlotDTM,
+  BIT1               presenceBitDTM_EGPRSMultiSlot,
+  BIT2               dTM_EGPRSMultiSlot       optional
+} with {
+  variant "FIELDORDER(msb)";
+  variant (dTM_EGPRSMultiSlot) "PRESENCE(presenceBitDTM_EGPRSMultiSlot = '1'B)"
+};
+
+
+//A5BITS
+
+type record  A5BITS_BSSGP
+{
+  BIT1       a51 ,
+  BIT1       a52 ,
+  BIT1       a53 ,
+  BIT1       a54 ,
+  BIT1       a55 ,
+  BIT1       a56 ,
+  BIT1       a57
+} with { variant "FIELDORDER(msb)" };
+
+
+type record MSRACapabilityValues1111_BSSGP
+{
+  BIT4               accessTechnType,    //1111
+  integer            lengthIndicator,
+  BIT1               presenceIndicator_AdditionalAccessTechnologiesRepetition,
+  AdditionalAccessTechnologiesRepetition_BSSGP // coded '1'B if list is not empty
+                  additionalAccessTechnologiesRepetition           optional,
+  bitstring          spare_bits
+} with {
+  variant "PRESENCE (accessTechnType = '1111'B)";
+  variant "FIELDORDER(msb)";
+  variant (lengthIndicator) "FIELDLENGTH(7)";
+  variant (lengthIndicator) "UNIT(bits)";
+  variant (lengthIndicator) "BYTEORDER(last)";
+  variant (additionalAccessTechnologiesRepetition)
+  "PRESENCE(presenceIndicator_AdditionalAccessTechnologiesRepetition = '1'B)";
+  variant (lengthIndicator)
+  "LENGTHTO(presenceIndicator_AdditionalAccessTechnologiesRepetition,
+             additionalAccessTechnologiesRepetition,spare_bits)";
+
+};
+
+type record of AdditionalAccessTechnologiesRecord_BSSGP
+                               AdditionalAccessTechnologiesRepetition_BSSGP
+with { variant "EXTENSION_BIT(reverse)" };
+
+
+type record AdditionalAccessTechnologiesRecord_BSSGP
+{
+  AdditionalAccessTechnologies_BSSGP additionalAccessTechnologies,
+  BIT1                               extensionBit
+} with { variant "FIELDORDER(msb)" };
+
+
+type record  AdditionalAccessTechnologies_BSSGP
+{
+  BIT4               accessTechnType,
+  BIT3               gMSKPowerClass,
+  BIT2               psk8PowerClass
+} with { variant "FIELDORDER(msb)" };
+
+
+
+// 11.3.23
+type record OMC_Id_BSSGP
+{
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,
+  OCT20                  oMC_Identity
+} with { 
+  variant "PRESENCE(iEI = '14'O)";
+  variant (lengthIndicator) "LENGTHTO (oMC_Identity)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+ 
+// 11.3.24 
+//NOTE: lengthIndicator-short form will be converted to 
+// long form if needed during encoding
+type record PDU_in_Error
+{
+ OCT1                   iEI,
+ BIT1                   ext,
+ LIN2_2a                lengthIndicator,
+ octetstring            erroneous_BSSGP_PDU
+} with { 
+  variant "PRESENCE(iEI = '15'O)";
+  variant (lengthIndicator) "LENGTHTO (erroneous_BSSGP_PDU)";
+  variant (lengthIndicator) "CROSSTAG( length1,         ext = '1'B;
+                                       length2,         ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+// 11.3.25
+type record  PDU_Lifetime
+{
+ OCT1                   iEI,
+ BIT1                   ext,
+ LIN2_2a                lengthIndicator,
+ OCT2                   delay_Value
+} with { 
+  variant "PRESENCE(iEI = '16'O)";
+  variant (lengthIndicator) "LENGTHTO (delay_Value)";
+  variant (lengthIndicator) "CROSSTAG( length1,         ext = '1'B;
+                                       length2,         ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+// 11.3.27
+type record Priority_BSSGP
+{
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,
+  BIT1                   pvi,  
+  BIT1                   qa, 
+  BIT4                   priority_Level, //(1..14) 0: spare, 15: not used  
+  BIT1                   pci, 
+  BIT1                   spare        
+} with { 
+  variant "PRESENCE(iEI = '17'O)";
+  variant (lengthIndicator) "LENGTHTO (pvi,qa,priority_Level,pci,spare)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+// 11.3.28
+type record QoS_Profile
+{
+ OCT1                   iEI,
+ BIT1                   ext,
+ LIN2_2a                lengthIndicator,
+ OCT2                   peak_Bit_Rate,
+ BIT3                   precedence,
+ BIT1                   a_bit,
+ BIT1                   t_bit,
+ BIT1                   c_r_bit,
+ BIT2                   peakBitRateGranularity
+} with {  
+  variant "PRESENCE(iEI = '18'O)";
+  variant (lengthIndicator) "LENGTHTO (peak_Bit_Rate,precedence,
+                                       a_bit,t_bit,c_r_bit,peakBitRateGranularity)";
+  variant (lengthIndicator) "CROSSTAG( length1,         ext = '1'B;
+                                       length2,         ext = '0'B;)";
+   variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+       
+       
+type record QoS_Profile_V
+{ 
+ OCT2                   peak_Bit_Rate,
+ BIT3                   precedence,
+ BIT1                   a_bit,
+ BIT1                   t_bit,
+ BIT1                   c_r_bit,
+ BIT2                   peakBitRateGranularity
+}
+                       
+// 11.3.29
+type record Radio_Cause
+{
+ OCT1                   iEI,
+ BIT1                   ext,
+ LIN2_2a                lengthIndicator,
+ OCT1                   radio_Cause_Value
+} with { 
+  variant "PRESENCE(iEI = '19'O)";
+  variant (lengthIndicator) "LENGTHTO (radio_Cause_Value)";
+  variant (lengthIndicator) "CROSSTAG( length1,         ext = '1'B;
+                                       length2,         ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+// 11.3.30
+type record  RA_Cap_UPD_CAUSE
+{
+ OCT1                   iEI,
+ BIT1                   ext,
+ LIN2_2a                lengthIndicator,
+ OCT1                   rA_CAP_UPD_Cause_value
+} with { 
+  variant "PRESENCE(iEI = '1A'O)";
+  variant (lengthIndicator) "LENGTHTO (rA_CAP_UPD_Cause_value)";
+  variant (lengthIndicator) "CROSSTAG( length1,         ext = '1'B;
+                                       length2,         ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+// 11.3.31
+type record  Routeing_Area
+{
+ OCT1                   iEI,
+ BIT1                   ext,
+ LIN2_2a                lengthIndicator,
+ HEX1                   mccDigit1,
+ HEX1                   mccDigit2,
+ HEX1                   mccDigit3,
+ HEX1                   mncDigit3,
+ HEX1                   mncDigit1,
+ HEX1                   mncDigit2,
+ OCT2                   lac,    
+ OCT1                   rac    
+} with {
+  variant "PRESENCE(iEI = '1B'O)";
+  variant (lengthIndicator) "LENGTHTO (mccDigit1,mccDigit2,mccDigit3,mncDigit3,
+         mncDigit1,mncDigit2,lac,rac)";
+  variant (lengthIndicator) "CROSSTAG( length1,         ext = '1'B;
+                                       length2,         ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+// 11.3.32
+type record R_default_MS
+{
+ OCT1                   iEI,
+ BIT1                   ext,
+ LIN2_2a                lengthIndicator,
+ OCT2                   r_default_MS_value
+} with { 
+  variant "PRESENCE(iEI = '1C'O)";
+  variant (lengthIndicator) "LENGTHTO (r_default_MS_value)";
+  variant (lengthIndicator) "CROSSTAG( length1,         ext = '1'B;
+                                       length2,         ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+// 11.3.33
+type record Suspend_Reference_Number
+{
+ OCT1                    iEI,
+ BIT1                    ext,
+ LIN2_2a                 lengthIndicator,
+ OCT1                    suspend_Reference_Number_value
+} with { 
+  variant "PRESENCE(iEI = '1D'O)";
+  variant (lengthIndicator) "LENGTHTO (suspend_Reference_Number_value)";
+  variant (lengthIndicator) "CROSSTAG( length1,         ext = '1'B;
+                                       length2,         ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};        
+
+// 11.3.34
+type record Tag
+{
+ OCT1                   iEI,
+ BIT1                   ext,
+ LIN2_2a                lengthIndicator,
+ OCT1                   unstructured_Value
+} with { 
+  variant "PRESENCE(iEI = '1E'O)";
+  variant (lengthIndicator) "LENGTHTO (unstructured_Value)";
+  variant (lengthIndicator) "CROSSTAG( length1,         ext = '1'B;
+                                       length2,         ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+// 11.3.35        
+type record TLLI_BSSGP
+{
+ OCT1                   iEI,
+ BIT1                   ext,
+ LIN2_2a                lengthIndicator,
+ OCT4                   tLLI_Value
+} with { 
+  variant "PRESENCE(iEI = '1F'O)";
+  variant (lengthIndicator) "LENGTHTO (tLLI_Value)";
+  variant (lengthIndicator) "CROSSTAG( length1,         ext = '1'B;
+                                       length2,         ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";        
+};
+
+// 11.3.36
+// Note : reference in spec is to "TMSI/P-TMSI information element in 
+// 3GPP TS 24.008", however this specification has Mobile Identity 
+// IE which includes TMSI/P-TMSI
+type record TMSI_BSSGP
+{
+ OCT1                   iEI,
+ BIT1                   ext,
+ LIN2_2a                lengthIndicator,
+ OCT4                   tMSI_Value
+} with { 
+  variant "PRESENCE(iEI = '20'O)";
+  variant (lengthIndicator) "LENGTHTO (tMSI_Value)";
+  variant (lengthIndicator) "CROSSTAG( length1,         ext = '1'B;
+                                       length2,         ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+
+// 11.3.37
+type record Trace_Reference_BSSGP
+{
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,
+  OCT2                   trace_Reference
+} with { 
+  variant "PRESENCE(iEI = '21'O)";
+  variant (lengthIndicator) "LENGTHTO (trace_Reference)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+
+// 11.3.38
+type record Trace_Type_BSSGP
+{
+ OCT1                   iEI,
+ BIT1                   ext,
+ LIN2_2a                lengthIndicator,
+ OCT1                   equipment_Trace
+} with { 
+  variant "PRESENCE(iEI = '22'O)";
+  variant (lengthIndicator) "LENGTHTO (equipment_Trace)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+
+};
+
+
+// 11.3.39
+type record TransactionId_BSSGP
+{
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,
+  OCT2                   transaction_Id
+} with { 
+  variant "PRESENCE(iEI = '23'O)";
+  variant (lengthIndicator) "LENGTHTO (transaction_Id)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+
+// 11.3.40
+type record Trigger_Id_BSSGP
+{
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,
+  OCT20                  entity_Identity
+} with { 
+  variant "PRESENCE(iEI = '24'O)";
+  variant (lengthIndicator) "LENGTHTO (entity_Identity)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+
+// 11.3.41
+type record Number_of_octets_affected
+{
+ OCT1                   iEI,
+ BIT1                   ext,
+ LIN2_2a                lengthIndicator,
+ OCT3                   number_of_octets_transfered_or_deleted 
+                              // could be changed to integer input if simpler
+} with { 
+  variant "PRESENCE(iEI = '25'O)";
+   variant (lengthIndicator) 
+        "LENGTHTO (number_of_octets_transfered_or_deleted)";        
+   variant (lengthIndicator) "CROSSTAG( length1,         ext = '1'B;
+                                        length2,         ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";                
+};
+
+
+// 11.3.42
+type record PFI
+{
+ OCT1                   iEI,
+ BIT1                   ext,
+ LIN2_2a                lengthIndicator,
+ BIT7                   pFI_Value,
+ BIT1                   spare  //  '0'B according to 10.5.6.11 of 24.008
+
+} with { 
+  variant "PRESENCE(iEI = '28'O)";
+   variant (lengthIndicator) 
+        "LENGTHTO (pFI_Value,spare)";
+  variant (lengthIndicator) "CROSSTAG( length1,         ext = '1'B;
+                                       length2,         ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";        
+};
+
+
+// 11.3.43
+// Note : structure from 24.008
+type record ABQP
+{
+ OCT1                iEI,
+ BIT1                ext,
+ LIN2_2a             lengthIndicator,
+ BIT3                reliabilityClass,
+ BIT3                delayClass,
+ BIT2                spare1,  // '00'B
+ BIT3                precedenceClass,
+ BIT1                spare2,
+ BIT4                peakThroughput,
+ BIT5                meanThroughput,
+ BIT3                spare3,
+ BIT3                deliverErroneusSDU optional, //opt because of V97
+ BIT2                deliveryOrder optional, //opt because of V97
+ BIT3                trafficClass optional, //opt because of V97
+ OCT1                maxSDUSize optional, //opt because of V97
+ OCT1                maxBitrateUplink optional, //opt because of V97
+ OCT1                maxBitrateDownlink optional, //opt because of V97
+ BIT4                sduErrorRatio optional, //opt because of V97
+ BIT4                residualBER optional, //opt because of V97
+ BIT2                trafficHandlingPriority optional, //opt because of V97
+ BIT6                transferDelay optional, //opt because of V97
+ OCT1                guaranteedBitRateUplink optional, //opt because of V97
+ OCT1                guaranteedBitRateDownlink optional, //opt because of V97
+ BIT4                sourceStatisticsDescriptor optional, //opt because of V97
+ BIT1                signallingIndication optional, //opt because of V97
+ BIT3                spare4 optional, //opt because of V97
+ OCT1                maxBitRateDownlinkExtended optional,
+ OCT1                guaranteedBitRateDownlinkExtended optional,
+ OCT1                maxBitrateUplinkExtended           optional, //opt because of V97
+ OCT1                guaranteedBitRateUplinkExtended    optional  //opt because of V97
+} with { 
+  variant "PRESENCE(iEI = '3A'O)";
+   variant (lengthIndicator) 
+        "LENGTHTO (reliabilityClass,delayClass,spare1,precedenceClass,
+               spare2,peakThroughput,
+         meanThroughput,spare3
+         ,deliverErroneusSDU,deliveryOrder,trafficClass,maxSDUSize,
+         maxBitrateUplink,maxBitrateDownlink,sduErrorRatio,residualBER,
+     trafficHandlingPriority,transferDelay,guaranteedBitRateUplink,
+     guaranteedBitRateDownlink,sourceStatisticsDescriptor,
+     signallingIndication,spare4,maxBitRateDownlinkExtended,
+     guaranteedBitRateDownlinkExtended,maxBitrateUplinkExtended,
+     guaranteedBitRateUplinkExtended)";        
+
+   variant (lengthIndicator) "CROSSTAG( length1,        ext = '1'B;
+                                       length2,         ext = '0'B;)";  
+   variant (ext,lengthIndicator) "FIELDORDER(msb)";
+ };
+
+
+// 11.3.44
+type record GPRS_Timer
+{
+ OCT1                   iEI,
+ BIT1                   ext,
+ LIN2_2a                lengthIndicator,
+ BIT5                   timer_Value,
+ BIT3                   unit_Value
+} with { 
+  variant "PRESENCE(iEI = '29'O)";
+   variant (lengthIndicator) 
+        "LENGTHTO (timer_Value,unit_Value)";
+   variant (lengthIndicator) "CROSSTAG( length1,        ext = '1'B;
+                                       length2,         ext = '0'B;)";
+   variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};        
+
+// 11.3.45
+type record Feature_bitmap
+{
+ OCT1                   iEI,
+ BIT1                   ext,
+ LIN2_2a                lengthIndicator,
+ BIT1                   pFC,
+ BIT1                   cBL,
+ BIT1                   iNR,
+ BIT1                   lCS,
+ BIT1                   rIM,
+ BIT1                   pFC_FC,
+ BIT1                   enhancedRadioStatus,
+ BIT1                   mBMS
+} with { 
+  variant "PRESENCE(iEI = '3B'O)";
+  variant (lengthIndicator) "LENGTHTO (pFC,cBL,iNR,lCS,rIM,pFC_FC,
+                                             enhancedRadioStatus,mBMS)";
+  variant (lengthIndicator) "CROSSTAG( length1,        ext = '1'B;
+                                             length2,        ext = '0'B;)"; 
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+// 11.3.46
+type record Bucket_Full_Ratio
+{
+ OCT1                   iEI,
+ BIT1                   ext,
+ LIN2_2a                lengthIndicator,
+ OCT1                   rate_of_the_Bucket 
+                        // could be changed to integer input if simpler
+} with { 
+  variant "PRESENCE(iEI = '3C'O)";
+   variant (lengthIndicator) "LENGTHTO (rate_of_the_Bucket)";
+   variant (lengthIndicator) "CROSSTAG( length1,       ext = '1'B;
+                                              length2,       ext = '0'B;)";
+   variant (ext,lengthIndicator) "FIELDORDER(msb)";
+        }
+
+
+// 11.3.47
+type record Service_UTRAN_CCO
+{
+ OCT1                   iEI,
+ BIT1                   ext,
+ LIN2_2a                lengthIndicator,
+ BIT3                   service_UTRAN_CCO_Value,
+ BIT2					service_E_UTRAN_CCO_Value,
+ BIT3                   spare
+} with { 
+  variant "PRESENCE(iEI = '3D'O)";
+  variant (lengthIndicator) "LENGTHTO (service_UTRAN_CCO_Value,service_E_UTRAN_CCO_Value,spare)";  
+   variant (lengthIndicator) "CROSSTAG( length1,        ext = '1'B;
+                                       length2,         ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+// new IE for Wendy Xiang and Freeman Feng
+type record Service_Class_Indicator {
+  OCT1                    iEI,
+  BIT1                    ext,
+  LIN2_2a                 lengthIndicator,
+  OCT1                    serviceClassIndicator
+} with { 
+  variant "PRESENCE(iEI = '99'O)";
+  variant (lengthIndicator) "LENGTHTO (serviceClassIndicator)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+  length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+// 11.3.48
+type record NSEI_BSSGP
+{
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,
+  OCT2                   nSEI 
+} with { 
+  variant "PRESENCE(iEI = '3E'O)";
+  variant (lengthIndicator) "LENGTHTO (nSEI)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+// 11.3.49
+type record RRLP_APDU_BSSGP
+{
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,
+  octetstring            rRLP_Message
+} with { 
+  variant "PRESENCE(iEI = '3F'O)";
+  variant (lengthIndicator) "LENGTHTO (rRLP_Message)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+  //variant "PADDING(yes)";
+}
+
+
+// 11.3.50   
+// 24.008 -> 49.031
+type record LCS_QoS_BSSGP
+{
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,  
+  BIT1                   vert,
+  BIT1                   vel,
+  BIT6                   spare1,  
+  BIT7                   horizontal_Accuracy,
+  BIT1                   hA_Indicator,         // 1: is specified  
+  BIT7                   vertical_Accuracy,
+  BIT1                   vA_Indicator,         // 1: is specified  
+  BIT6                   spare2,
+  BIT2                   response_Time_Category
+} with { 
+  variant "PRESENCE(iEI = '40'O)";
+  variant (lengthIndicator) "LENGTHTO (vert,vel,spare1,horizontal_Accuracy,hA_Indicator,vertical_Accuracy,vA_Indicator,spare2,response_Time_Category)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                         length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+// 11.3.51
+// 49.031
+type record LCS_Client_Type_BSSGP
+{
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,
+  BIT4                   client_Subtype,
+  BIT4                   client_Category
+} with { 
+  variant "PRESENCE(iEI = '41'O)";
+  variant (lengthIndicator) "LENGTHTO (client_Subtype,client_Category)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+
+// 11.3.52
+// 49.031
+type record Requested_GPS_Assistance_Data_BSSGP
+{
+  OCT1                                  iEI,
+  BIT1                                  ext,
+  LIN2_2a                               lengthIndicator,
+  Requested_GPS_Assistance_Data_Value   requested_GPS_Assistance_Data   
+} with { 
+  variant "PRESENCE(iEI = '42'O)";
+  variant (lengthIndicator) "LENGTHTO (requested_GPS_Assistance_Data)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+type record Requested_GPS_Assistance_Data_Value
+{
+ OCT1                    bits_H_to_A,
+ OCT1                    bits_P_to_I,
+ SatelliteRelatedData    satelliteRelatedData
+}
+
+type record SatelliteRelatedData
+{
+  BIT6                       spare,
+  BIT10                      gPS_Week,    
+  OCT1                       gPS_Toe,
+  BIT4                       t_Toe_Limit,
+  integer                    nSAT,
+  SatID_and_IODE_List        satID_and_IODE_List              
+} with { variant(nSAT) "FIELDLENGTH(4)";
+  variant(nSAT) "LENGTHTO(satID_and_IODE_List)";
+  variant(nSAT) "UNIT(elements)";
+}
+
+type record of SatID_and_IODE SatID_and_IODE_List;
+
+type record SatID_and_IODE
+{
+  BIT6      satID,
+  BIT2      spare,
+  OCT1      iODE
+}
+
+// 11.3.53
+// 49.031
+type record Location_Type_BSSGP
+{
+  OCT1                   iEI,                 
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,
+  OCT1                   location_Information,
+  OCT1                   positioning_Method optional
+} with { 
+  variant "PRESENCE(iEI = '43'O)";
+  variant (lengthIndicator) "LENGTHTO (location_Information,positioning_Method)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+// 11.3.54
+// 48.008 -> 23.03
+type record Location_Estimate_BSSGP
+{
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,
+  octetstring            location   //  encoded location information
+} with { 
+  variant "PRESENCE(iEI = '44'O)";
+  variant (lengthIndicator) "LENGTHTO (location)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+// 11.3.55
+// 49.031
+type record Positioning_Data_BSSGP
+{
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,
+  PositioningDataValue   positioningDataValue  //  encoded location data
+} with { 
+  variant "PRESENCE(iEI = '45'O)";
+  variant (lengthIndicator) "LENGTHTO (positioningDataValue)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+type record PositioningDataValue
+{
+ BIT4                     positioningDataDiscriminator,
+ BIT4                     spare,
+ PositioningMethod_List   positioningMethod_List 
+}
+
+type record of PositioningMethodValue PositioningMethod_List;
+
+type record PositioningMethodValue
+{
+  BIT3     usage,
+  BIT5     positioningMethod
+}
+
+// 11.3.56
+type record Deciphering_Keys_BSSGP
+{
+  OCT1                            iEI,
+  BIT1                            ext,
+  LIN2_2a                         lengthIndicator,
+  DecipheringKeysValue            decipheringKeysValue   //  encoded deciphering keys data
+} with { 
+  variant "PRESENCE(iEI = '46'O)";
+  variant (lengthIndicator) "LENGTHTO (decipheringKeysValue)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+type record DecipheringKeysValue
+{
+ BIT1                     cipheringkeyFlag,
+ BIT7                     spare,
+ OCT7                     currentDecipheringKeyValue,
+ OCT7                     nextDecipheringKeyValue
+}
+ 
+// 11.3.57
+// 49.031
+type record LCS_Priority_BSSGP
+{
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,
+  OCT1                   priority_Value   // 0: highest, other: normal
+} with { 
+  variant "PRESENCE(iEI = '47'O)";
+  variant (lengthIndicator) "LENGTHTO (priority_Value)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+// 11.3.58
+// 49.031
+type record LCS_Cause_BSSGP
+{
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,
+  OCT1                   cause_Value,
+  OCT1                   diagnostic_Value optional
+} with { 
+  variant "PRESENCE(iEI = '48'O)";
+  variant (lengthIndicator) "LENGTHTO (cause_Value,diagnostic_Value)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+// 11.3.59
+// 24.008
+type record LCS_Capability_BSSGP
+{  
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,
+  BIT1                   gPS_C,
+  BIT1                   gPS_B,
+  BIT1                   gPS_A,
+  BIT1                   oTD_B,
+  BIT1                   oTD_A,
+  BIT3                   spare
+} with { 
+  variant "PRESENCE(iEI = '49'O)";
+  variant (lengthIndicator) "LENGTHTO (gPS_C,gPS_B,gPS_A,oTD_B,oTD_A,spare)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+// 11.3.60
+type record RRLP_Flags_BSSGP
+{
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,
+  BIT1                   flag1,
+  BIT7                   spare
+} with { 
+  variant "PRESENCE(iEI = '4A'O)";
+  variant (lengthIndicator) "LENGTHTO (flag1,spare)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+
+//11.3.61
+type record RIM_Application_Identity
+{
+ OCT1                   iEI,
+ BIT1                   ext,
+ LIN2_2a                lengthIndicator,
+ OCT1                   rIMApplicationIdentity
+} with { 
+  variant "PRESENCE(iEI = '4B'O)";
+   variant (lengthIndicator) "LENGTHTO (rIMApplicationIdentity)";        
+   variant (lengthIndicator) "CROSSTAG( length1,        ext = '1'B;
+                                       length2,         ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+
+//11.3.62
+type record RIM_Sequence_Number
+{
+ OCT1                   iEI,
+ BIT1                   ext,
+ LIN2_2a                lengthIndicator,
+ OCT4                   rIMSequenceNumber
+} with { 
+  variant "PRESENCE(iEI = '4C'O)";
+   variant (lengthIndicator) "LENGTHTO (rIMSequenceNumber)";        
+   variant (lengthIndicator) "CROSSTAG( length1,        ext = '1'B;
+                                       length2,         ext = '0'B;)";
+   variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+
+// Table 11.3.62a.1
+type record RAN_Information_Request_RIM_Container
+{
+OCT1                         iEI,
+BIT1                         ext,
+LIN2_2a                      lengthIndicator,
+RIM_Application_Identity     rIM_Application_Identity,
+RIM_Sequence_Number          rIM_Sequence_Number,
+RIM_PDU_Indications          rIM_PDU_Indications,
+RIM_Protocol_Version_Number  rIM_Protocol_Version_Number optional,
+RAN_Information_Request_Application_Container  application_Container optional,
+SON_Transfer_Application_Identity_TLV  sON_Transfer_Application_Identity_TLV optional
+} with { 
+  variant "PRESENCE(iEI = '57'O)";
+  variant (lengthIndicator) "LENGTHTO (rIM_Application_Identity,
+           rIM_Sequence_Number,rIM_PDU_Indications,rIM_Protocol_Version_Number,
+           application_Container,sON_Transfer_Application_Identity_TLV)";        
+  variant (lengthIndicator) "CROSSTAG( length1,        ext = '1'B;
+                                       length2,        ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)"; 
+  variant (application_Container) 
+     "PRESENCE
+        (rIM_Application_Identity.rIMApplicationIdentity = '01'O,
+         rIM_Application_Identity.rIMApplicationIdentity = '02'O,
+         rIM_Application_Identity.rIMApplicationIdentity = '03'O)";                           
+   variant (application_Container) 
+     "CROSSTAG 
+         (nacc,rIM_Application_Identity.rIMApplicationIdentity = '01'O;
+          si3,rIM_Application_Identity.rIMApplicationIdentity = '02'O;
+          mBMS_data_channel,rIM_Application_Identity.rIMApplicationIdentity = '03'O;)"       
+};
+
+
+// Table 11.3.62a.2
+type record RAN_Information_RIM_Container
+{
+OCT1                         iEI,
+BIT1                         ext,
+LIN2_2a                      lengthIndicator,  
+RIM_Application_Identity     rIM_Application_Identity,
+RIM_Sequence_Number          rIM_Sequence_Number,
+RIM_PDU_Indications          rIM_PDU_Indications,
+RIM_Protocol_Version_Number  rIM_Protocol_Version_Number optional,
+ApplContainer_or_ApplErrContainer  applContainer_or_ApplErrContainer optional,
+SON_Transfer_Application_Identity_TLV  sON_Transfer_Application_Identity optional
+}  with { 
+  variant "PRESENCE(iEI = '58'O)";
+      variant (lengthIndicator) "LENGTHTO (rIM_Application_Identity,
+           rIM_Sequence_Number,rIM_PDU_Indications,rIM_Protocol_Version_Number,
+           applContainer_or_ApplErrContainer,sON_Transfer_Application_Identity)";        
+      variant (lengthIndicator) "CROSSTAG( length1,        ext = '1'B;
+                                           length2,        ext = '0'B;)";
+      variant (ext,lengthIndicator) "FIELDORDER(msb)";
+      variant (applContainer_or_ApplErrContainer)
+       "PRESENCE
+           (rIM_Application_Identity.rIMApplicationIdentity = '01'O,
+            rIM_Application_Identity.rIMApplicationIdentity = '02'O,
+            rIM_Application_Identity.rIMApplicationIdentity = '03'O)";                
+      variant (applContainer_or_ApplErrContainer) 
+       "CROSSTAG
+            (nacc,rIM_Application_Identity.rIMApplicationIdentity = '01'O;
+             si3,rIM_Application_Identity.rIMApplicationIdentity = '02'O;
+             mBMS_data_channel,rIM_Application_Identity.rIMApplicationIdentity = '03'O;)" 
+};         
+
+
+type union ApplContainer_or_ApplErrContainer
+{
+  ApplContainer_or_ApplErrContainer_NACC nacc,
+  ApplContainer_or_ApplErrContainer_SI3 si3,
+  ApplContainer_or_ApplErrContainer_MBMS_data_channel mBMS_data_channel 
+}
+
+type union ApplContainer_or_ApplErrContainer_NACC
+{
+ RAN_Information_Application_Container_NACC   application_Container,
+ Application_Error_Container_NACC             application_Error_Container
+};
+
+type union ApplContainer_or_ApplErrContainer_SI3
+{
+ RAN_Information_Application_Container_SI3   application_Container,
+ Application_Error_Container_SI3             application_Error_Container
+};
+
+type union ApplContainer_or_ApplErrContainer_MBMS_data_channel
+{
+ RAN_Information_Application_Container_MBMS_data_channel   application_Container,
+ Application_Error_Container_MBMS_data_channel             application_Error_Container
+};
+
+// Table 11.3.62a.3
+type record RAN_Information_Ack_RIM_Container
+{
+OCT1                         iEI,
+BIT1                         ext,
+LIN2_2a                      lengthIndicator,  
+RIM_Application_Identity     rIM_Application_Identity,
+RIM_Sequence_Number          rIM_Sequence_Number,
+RIM_Protocol_Version_Number  rIM_Protocol_Version_Number optional,
+SON_Transfer_Application_Identity_TLV  sON_Transfer_Application_Identity optional
+} with { 
+  variant "PRESENCE(iEI = '5A'O)";
+  variant (lengthIndicator) "LENGTHTO (rIM_Application_Identity,
+          rIM_Sequence_Number,rIM_Protocol_Version_Number,sON_Transfer_Application_Identity)";        
+  variant (lengthIndicator) "CROSSTAG( length1,        ext = '1'B;
+                                       length2,        ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+
+// Table 11.3.62a.4
+type record RAN_Information_Error_RIM_Container
+{
+OCT1                         iEI,
+BIT1                         ext,
+LIN2_2a                      lengthIndicator,  
+RIM_Application_Identity     rIM_Application_Identity,
+Cause_BSSGP                  rIM_cause,
+RIM_Protocol_Version_Number  rIM_Protocol_Version_Number optional,
+PDU_in_Error                 pDU_in_Error,
+SON_Transfer_Application_Identity_TLV  sON_Transfer_Application_Identity optional
+} with { 
+  variant "PRESENCE(iEI = '5B'O)";
+  variant (lengthIndicator) "LENGTHTO (rIM_Application_Identity,
+         rIM_cause,rIM_Protocol_Version_Number,pDU_in_Error,sON_Transfer_Application_Identity)";        
+  variant (lengthIndicator) "CROSSTAG( length1,        ext = '1'B;
+                                       length2,        ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+
+// Table 11.3.62a.5
+type record RAN_Information_Application_Error_RIM_Container
+{
+OCT1                         iEI,
+BIT1                         ext,
+LIN2_2a                      lengthIndicator,    
+RIM_Application_Identity     rIM_Application_Identity,
+RIM_Sequence_Number          rIM_Sequence_Number,
+RIM_PDU_Indications          rIM_PDU_Indications,
+RIM_Protocol_Version_Number  rIM_Protocol_Version_Number optional,
+Application_Error_Container  application_Error_Container,
+SON_Transfer_Application_Identity_TLV  sON_Transfer_Application_Identity optional
+} with { 
+  variant "PRESENCE(iEI = '59'O)";
+  variant (lengthIndicator) "LENGTHTO (rIM_Application_Identity,
+    rIM_Sequence_Number,rIM_PDU_Indications,rIM_Protocol_Version_Number,  
+    application_Error_Container,sON_Transfer_Application_Identity)";        
+  variant (lengthIndicator) "CROSSTAG( length1,        ext = '1'B;
+                                       length2,        ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+  variant (application_Error_Container)
+   "CROSSTAG 
+      (nacc,rIM_Application_Identity.rIMApplicationIdentity = '01'O;
+       si3,rIM_Application_Identity.rIMApplicationIdentity = '02'O;
+       mBMS_data_channel,rIM_Application_Identity.rIMApplicationIdentity = '03'O;)" 
+};
+
+
+// 11.3.63.1
+type union RAN_Information_Request_Application_Container
+{
+RAN_Information_Request_Application_Container_NACC nacc,
+RAN_Information_Request_Application_Container_SI3 si3,  
+RAN_Information_Request_Application_Container_MBMS_data_channel mBMS_data_channel
+}
+
+
+//Table 11.3.63.1.1
+type record RAN_Information_Request_Application_Container_NACC
+{
+ OCT1                   iEI,
+ BIT1                   ext,
+ LIN2_2a                lengthIndicator,
+ Cell_Identifier        reporting_Cell_Identifier
+} with { 
+  variant "PRESENCE(iEI = '4D'O)";
+  variant (lengthIndicator) "LENGTHTO (reporting_Cell_Identifier)";     
+  variant (lengthIndicator) "CROSSTAG( length1,         ext = '1'B;
+                                      length2,          ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};        
+
+//Table 11.3.63.1.2
+type record RAN_Information_Request_Application_Container_SI3
+{
+ OCT1                   iEI,
+ BIT1                   ext,
+ LIN2_2a                lengthIndicator,
+ Cell_Identifier        reporting_Cell_Identifier
+} with { 
+  variant "PRESENCE(iEI = '4D'O)";
+   variant (lengthIndicator) "LENGTHTO (reporting_Cell_Identifier)";     
+   variant (lengthIndicator) "CROSSTAG( length1,         ext = '1'B;
+                                       length2,          ext = '0'B;)";
+   variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};        
+
+//Table 11.3.63.1.3
+type record RAN_Information_Request_Application_Container_MBMS_data_channel
+{
+ OCT1                   iEI,
+ BIT1                   ext,
+ LIN2_2a                lengthIndicator,
+ Cell_Identifier        reporting_Cell_Identifier
+} with { 
+  variant "PRESENCE(iEI = '4D'O)";
+  variant (lengthIndicator) "LENGTHTO (reporting_Cell_Identifier)";     
+  variant (lengthIndicator) "CROSSTAG( length1,         ext = '1'B;
+                                       length2,         ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+//11.3.63.1.4
+type record RAN_Information_Request_Application_Container_SON_transfer
+{
+  OCT1                  iEI,
+  BIT1                  ext,
+  LIN2_2a               lengthIndicator,
+  Cell_Identifier       reporting_Cell_Identifier,
+  OCTN                  sON_Transfer_Request_Container
+} with { 
+  variant "PRESENCE(iEI = '4D'O)";
+  variant (lengthIndicator) "LENGTHTO (reporting_Cell_Identifier,sON_Transfer_Request_Container)";     
+  variant (lengthIndicator) "CROSSTAG( length1,         ext = '1'B;
+                                       length2,         ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+//11.3.63.1.5
+type record RAN_Information_Request_Application_Container_UTRA_SI
+{
+  OCT1                  iEI,
+  BIT1                  ext,
+  LIN2_2a               lengthIndicator,
+  Cell_Identifier       reporting_Cell_Identifier
+} with { 
+  variant "PRESENCE(iEI = '4D'O)";
+  variant (lengthIndicator) "LENGTHTO (reporting_Cell_Identifier)";     
+  variant (lengthIndicator) "CROSSTAG( length1,         ext = '1'B;
+                                       length2,         ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+//Table 11.3.63.2.1
+type record RAN_Information_Application_Container_NACC
+{
+ OCT1                   iEI,
+ BIT1                   ext,
+ LIN2_2a                lengthIndicator,
+ Cell_Identifier        reporting_Cell_Identifier,
+ BIT1                   typeBit,
+ BIT7                   number_of_SI_PSI,
+ octetstring            sI_PSI
+} with { 
+  variant "PRESENCE(iEI = '4E'O)";
+  variant (lengthIndicator) 
+    "LENGTHTO (reporting_Cell_Identifier,typeBit,number_of_SI_PSI,sI_PSI)";
+  variant (lengthIndicator) "CROSSTAG( length1,         ext = '1'B;
+                                       length2,         ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};  
+
+//Table 11.3.63.2.2
+type record RAN_Information_Application_Container_SI3
+{
+ OCT1                   iEI,
+ BIT1                   ext,
+ LIN2_2a                lengthIndicator,
+ Cell_Identifier        reporting_Cell_Identifier,
+ SI3                    sI3
+} with { 
+  variant "PRESENCE(iEI = '4E'O)";
+  variant (lengthIndicator) 
+    "LENGTHTO (reporting_Cell_Identifier,sI3)";
+  variant (lengthIndicator) "CROSSTAG( length1,         ext = '1'B;
+                                       length2,         ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}; 
+
+//44.018 9.1.35
+type record SI3
+{
+ OCT1                              sI3MessageType,    //'1B'O
+ OCT2                              cellIdentity,               //10.5.1.1 -> 24.008 
+ LocationAreaIdentification        locationAreaIdentification, //10.5.1.3 -> 24.008
+ ControlChannelDescription         controlChannelDescription,  //10.5.2.11
+ CellOptions                       cellOptions,                //10.5.2.3
+ CellSelectionParameters           cellSelectionParameters,    //10.5.2.4
+ RACHControlParameters             rACHControlParameters,      //10.5.2.29
+ OCT4                              sI3RestOctets               //10.5.2.34, bit encoded
+}
+
+type record LocationAreaIdentification
+{
+  HEX1               mccDigit1,
+  HEX1               mccDigit2,
+  HEX1               mccDigit3,
+  HEX1               mncDigit3,
+  HEX1               mncDigit1,
+  HEX1               mncDigit2,
+  OCT2               lac
+}
+
+type record ControlChannelDescription
+{
+ BIT3          cCCH_Conf,
+ BIT3          bS_AG_BLKS_RES,
+ BIT1          aTT,
+ BIT1          mSCR,
+ BIT3          bS_PA_MFRMS,
+ BIT2          spare1,   //'00'B
+ BIT2          cBQ3,
+ BIT1          spare2,  //'0'B
+ OCT1          t3212
+}
+
+type record CellOptions
+{
+ BIT4          radioLinkTimeout,
+ BIT2          dTX1,
+ BIT1          pWRC,
+ BIT1          dtx2
+}
+
+type record CellSelectionParameters
+{
+ BIT5          mS_TXPWR_MAX_CCH,
+ BIT3          cellReselectHysterisis,
+ BIT6          rXLEV_Access_Min,
+ BIT1          nECI,
+ BIT1          aCS
+}
+
+type record RACHControlParameters 
+{
+ BIT1          rE,
+ BIT1          cellBarrAccess,
+ BIT4          tX_Integer,
+ BIT2          maxRetrans,
+ OCT1          aC_15_to_8,
+ OCT1          aC_7_to_0    
+}
+
+//Table 11.3.63.2.3
+type record RAN_Information_Application_Container_MBMS_data_channel
+{
+ OCT1                      iEI,
+ BIT1                      ext,
+ LIN2_2a                   lengthIndicator,
+ Cell_Identifier           reporting_Cell_Identifier,
+ octetstring               mBMS_data_channel_report  //bit encoded
+} with { 
+  variant "PRESENCE(iEI = '4E'O)";
+  variant (lengthIndicator) 
+    "LENGTHTO (reporting_Cell_Identifier,mBMS_data_channel_report)";
+  variant (lengthIndicator) "CROSSTAG( length1,         ext = '1'B;
+                                       length2,         ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+//11.3.63.2.4
+type record RAN_Information_Application_Container_SON_transfer
+{
+  OCT1                     iEI,
+  BIT1                     ext,
+  LIN2_2a                  lengthIndicator,
+  BIT4                     rAT_Discriminator,
+  BIT4                     spare,
+  Cell_Identifier          reporting_Cell_Identifier,
+  OCTN                     sON_Transfer_Response_Container
+} with { 
+  variant "PRESENCE(iEI = '4E'O)";
+  variant (lengthIndicator) 
+    "LENGTHTO (rAT_Discriminator,spare,reporting_Cell_Identifier,sON_Transfer_Response_Container)";
+  variant (lengthIndicator) "CROSSTAG( length1,         ext = '1'B;
+                                       length2,         ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+//11.3.63.2.5
+type record RAN_Information_Application_Container_UTRA_SI
+{
+  OCT1                     iEI,
+  BIT1                     ext,
+  LIN2_2a                  lengthIndicator,
+  Cell_Identifier          reporting_Cell_Identifier,
+  OCTN                     uTRA_SI_Container
+} with { 
+  variant "PRESENCE(iEI = '4E'O)";
+  variant (lengthIndicator) 
+    "LENGTHTO (reporting_Cell_Identifier,uTRA_SI_Container)";
+  variant (lengthIndicator) "CROSSTAG( length1,         ext = '1'B;
+                                       length2,         ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+// 11.3.64
+type union Application_Error_Container
+{
+ Application_Error_Container_NACC               nacc,
+ Application_Error_Container_SI3                si3,
+ Application_Error_Container_MBMS_data_channel  mBMS_data_channel 
+} 
+      
+//11.3.64.1 
+type record Application_Error_Container_NACC
+{
+ OCT1                   iEI,
+ BIT1                   ext,
+ LIN2_2a                lengthIndicator,
+ OCT1                   nACC_cause,
+ Application_Container_IE_NACC  erroneousApplicationContainer
+} with { 
+  variant "PRESENCE(iEI = '56'O)";
+  variant (lengthIndicator)
+    "LENGTHTO (nACC_cause,erroneousApplicationContainer)"; 
+  variant (lengthIndicator) "CROSSTAG( length1,         ext = '1'B;
+                                       length2,         ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};        
+
+       
+type union Application_Container_IE_NACC
+{
+  RAN_Information_Request_Application_Container_NACC 
+                        rAN_Information_Request_Application_Container,
+            
+  RAN_Information_Application_Container_NACC    
+                        rAN_Information_Application_Container
+};
+     
+//11.3.64.2 
+type record Application_Error_Container_SI3
+{
+ OCT1                   iEI,
+ BIT1                   ext,
+ LIN2_2a                lengthIndicator,
+ OCT1                   sI3_cause,
+ Application_Container_IE_SI3  erroneousApplicationContainer
+} with { 
+  variant "PRESENCE(iEI = '56'O)";
+  variant (lengthIndicator)
+    "LENGTHTO (sI3_cause,erroneousApplicationContainer)"; 
+  variant (lengthIndicator) "CROSSTAG( length1,         ext = '1'B;
+                                       length2,         ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};     
+
+type union Application_Container_IE_SI3
+{
+  RAN_Information_Request_Application_Container_SI3 
+                        rAN_Information_Request_Application_Container,
+            
+  RAN_Information_Application_Container_SI3    
+                        rAN_Information_Application_Container
+};
+
+
+//11.3.64.3 
+type record Application_Error_Container_MBMS_data_channel
+{
+ OCT1                                        iEI,
+ BIT1                                        ext,
+ LIN2_2a                                     lengthIndicator,
+ OCT1                                        mBMS_data_channel_cause,
+ Application_Container_IE_MBMS_data_channel  erroneousApplicationContainer
+} with { 
+  variant "PRESENCE(iEI = '56'O)";
+  variant (lengthIndicator)
+    "LENGTHTO (mBMS_data_channel_cause,erroneousApplicationContainer)"; 
+  variant (lengthIndicator) "CROSSTAG( length1,         ext = '1'B;
+                                       length2,         ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};     
+
+type union Application_Container_IE_MBMS_data_channel
+{
+  RAN_Information_Request_Application_Container_MBMS_data_channel 
+                        rAN_Information_Request_Application_Container,
+            
+  RAN_Information_Application_Container_MBMS_data_channel    
+                        rAN_Information_Application_Container
+};
+
+//11.3.64.4
+type record Application_Error_Container_SON_transfer
+{
+ OCT1                                        iEI,
+ BIT1                                        ext,
+ LIN2_2a                                     lengthIndicator,
+ OCT1                                        sON_transfer_cause,
+ Application_Container_IE_SON_transfer       erroneousApplicationContainer
+};
+
+type union Application_Container_IE_SON_transfer
+{
+  RAN_Information_Request_Application_Container_SON_transfer
+                        rAN_Information_Request_Application_Container,
+  RAN_Information_Application_Container_SON_transfer
+                        rAN_Information_Application_Container
+};
+
+//11.3.64.5
+type record Application_Error_Container_UTRA_SI
+{
+ OCT1                                        iEI,
+ BIT1                                        ext,
+ LIN2_2a                                     lengthIndicator,
+ OCT1                                        uTRA_SI_cause,
+ Application_Container_IE_UTRA_SI            erroneousApplicationContainer
+};
+
+type union Application_Container_IE_UTRA_SI
+{
+  RAN_Information_Request_Application_Container_UTRA_SI
+                        rAN_Information_Request_Application_Container,
+  RAN_Information_Application_Container_UTRA_SI
+                        rAN_Information_Application_Container
+};
+
+//11.3.65
+type record RIM_PDU_Indications
+{
+ OCT1                   iEI,
+ BIT1                   ext,
+ LIN2_2a                lengthIndicator,
+ BIT1                   ack,
+ BIT3                   pDU_Type_Extension,
+ BIT4                   reserved
+} with { 
+  variant "PRESENCE(iEI = '4F'O)";
+  variant (lengthIndicator) "LENGTHTO (ack,pDU_Type_Extension,reserved)";
+  variant (lengthIndicator) "CROSSTAG( length1,         ext = '1'B;
+                                       length2,         ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+
+//11.3.67
+type record RIM_Protocol_Version_Number
+{
+ OCT1                   iEI,
+ BIT1                   ext,
+ LIN2_2a                lengthIndicator,
+ OCT1                   rIMProtocolVersionNumber
+} with {
+   variant "PRESENCE(iEI = '55'O)";
+   variant (lengthIndicator) "LENGTHTO (rIMProtocolVersionNumber)";   
+   variant (lengthIndicator) "CROSSTAG( length1,        ext = '1'B;
+                                              length2,        ext = '0'B;)";
+   variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};        
+
+// 11.3.68
+type record PFC_flow_control_parameters
+{
+ OCT1                   iEI,
+ BIT1                   ext,
+ LIN2_2a                lengthIndicator,
+ integer                number_of_PFC (0..11),
+ PFCs                   pFCs
+} with {
+  variant "PRESENCE(iEI = '52'O)";
+  variant (lengthIndicator) "LENGTHTO (number_of_PFC,pFCs)"; 
+  variant (number_of_PFC) "LENGTHTO (pFCs)";
+  variant (number_of_PFC) "UNIT(elements)"
+  variant (lengthIndicator) "CROSSTAG( length1,         ext = '1'B;
+                                       length2,         ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};        
+
+type record length(0..11) of  PFC PFCs;
+
+type record PFC
+{
+BIT7                    pFI_Value,
+BIT1                    spare,  //  '0'B according to 10.5.6.11 of 24.008
+OCT2                    bmax_PFC,
+OCT2                    r_PFC,
+OCT1                    b_PFC
+};
+
+// 11.3.69
+type record Global_CN_Id_BSSGP
+{
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,
+  Global_CN_Id_Value     global_CN_Id   //  encoded Global CN-Id
+} with { 
+  variant "PRESENCE(iEI = '53'O)";
+  variant (lengthIndicator) "LENGTHTO (global_CN_Id)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+type record Global_CN_Id_Value
+{
+ HEX1                    mccDigit1,
+ HEX1                    mccDigit2,
+ HEX1                    mccDigit3,
+ HEX1                    mncDigit3,
+ HEX1                    mncDigit1,
+ HEX1                    mncDigit2, 
+ OCT2                    cN_Id
+}
+
+
+// 11.3.70
+type record RIM_Routing_Information
+{
+ OCT1                   iEI,
+ BIT1                   ext,
+ LIN2_2a                lengthIndicator,
+ HEX1                   rIMRoutingAddressDiscriminator,
+ HEX1                   spare,
+ RIM_Routing_Address    rIM_Routing_Address 
+}  with { 
+  variant "PRESENCE(iEI = '54'O)";
+  variant (lengthIndicator) 
+    "LENGTHTO (rIMRoutingAddressDiscriminator,spare,rIM_Routing_Address)"; 
+  variant (lengthIndicator) "CROSSTAG( length1,         ext = '1'B;
+                                       length2,         ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+  variant (rIM_Routing_Address) 
+    "CROSSTAG (cell_Identifier, rIMRoutingAddressDiscriminator = '0'H;
+               globalRNCID,     rIMRoutingAddressDiscriminator = '1'H;
+               eNB_Identifier,  rIMRoutingAddressDiscriminator = '2'H;
+               eHRPD_SectorID,  rIMRoutingAddressDiscriminator = '3'H
+               )" 
+};
+
+type union RIM_Routing_Address
+{
+  Cell_Identifier_V   cell_Identifier, 
+  GlobalRNC_ID_BSSGP  globalRNCID,
+  ENB_Identifier_V    eNB_Identifier,
+  octetstring         eHRPD_SectorID
+}
+
+type record GlobalRNC_ID_BSSGP
+{
+ HEX1                   mccDigit1,
+ HEX1                   mccDigit2,
+ HEX1                   mccDigit3,
+ HEX1                   mncDigit3,
+ HEX1                   mncDigit1,
+ HEX1                   mncDigit2,
+ OCT2                   lac,
+ OCT1                   rac, 
+ HEX1                   spare,
+ integer                rNC_ID
+}  with { 
+    variant (spare,rNC_ID) "FIELDORDER(msb)";
+    variant (rNC_ID) "BYTEORDER(last)";  
+    variant (rNC_ID) "FIELDLENGTH(12)";
+}
+
+type record  ENB_Identifier_V {
+  HEX1               mccDigit1,
+  HEX1               mccDigit2,
+  HEX1               mccDigit3,
+  HEX1               mncDigit3,
+  HEX1               mncDigit1,
+  HEX1               mncDigit2,
+  OCT2               tac,  
+  octetstring       globaleNBID
+}
+
+
+// 11.3.71 
+type record MBMS_Session_Identity
+{
+ OCT1                    iEI,
+ BIT1                    ext,
+ LIN2_2a                 lengthIndicator,
+ OCT1                    mBMS_Session_Identifier_Value
+} with { 
+  variant "PRESENCE(iEI = '5D'O)";
+  variant (lengthIndicator) "LENGTHTO (mBMS_Session_Identifier_Value)";
+  variant (lengthIndicator) "CROSSTAG( length1,         ext = '1'B;
+                                       length2,         ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};        
+
+
+// 11.3.72 
+// 29.061 
+
+type record MBMS_Session_Duration
+{
+ OCT1                   iEI,
+ BIT1                   ext,
+ LIN2_2a                lengthIndicator,
+ octetstring            mBMS_Session_Duration_Value
+} with { 
+  variant "PRESENCE(iEI = '5E'O)";
+  variant (lengthIndicator) "LENGTHTO (mBMS_Session_Duration_Value)";  
+  variant (lengthIndicator) "CROSSTAG( length1,        ext = '1'B;
+                                       length2,         ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};        
+
+
+// 11.3.73 
+type record MBMS_Service_Area_Identity_List
+{
+ OCT1                   iEI,
+ BIT1                   ext,
+ LIN2_2a                lengthIndicator,
+ octetstring            mBMS_Service_Area_Identity_List_Value       
+} with { 
+  variant "PRESENCE(iEI = '5F'O)";
+  variant (lengthIndicator) 
+             "LENGTHTO (mBMS_Service_Area_Identity_List_Value)";        
+  variant (lengthIndicator) "CROSSTAG( length1,       ext = '1'B;
+                                       length2,       ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};        
+
+
+// 11.3.74
+type record MBMS_Response
+{
+ OCT1                   iEI,
+ BIT1                   ext,
+ LIN2_2a                lengthIndicator,
+ HEX1                   causeValue,
+ HEX1                   spare
+} with { 
+  variant "PRESENCE(iEI = '60'O)";
+  variant (lengthIndicator) "LENGTHTO (causeValue,spare)";        
+  variant (lengthIndicator) "CROSSTAG( length1,        ext = '1'B;
+                                       length2,        ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};        
+
+
+// 11.3.75
+type record MBMS_Routing_Area_List
+{
+ OCT1                    iEI,
+ BIT1                    ext,
+ LIN2_2a                 lengthIndicator,
+ HEX1                    spare,
+ HEX1                    number_of_Routing_Area_Identifications, 
+ octetstring             routing_Area_Identifications optional 
+
+} with { 
+  variant "PRESENCE(iEI = '61'O)";
+   variant (lengthIndicator) 
+     "LENGTHTO (spare,number_of_Routing_Area_Identifications,
+      routing_Area_Identifications)";     
+   variant (lengthIndicator) "CROSSTAG( length1,         ext = '1'B;
+                                        length2,         ext = '0'B;)";
+   variant (ext,lengthIndicator) "FIELDORDER(msb)";        
+};
+
+
+// 11.3.76
+type record MBMS_Session_Information
+{
+ OCT1                    iEI,
+ BIT1                    ext,
+ LIN2_2a                 lengthIndicator,
+ BIT1                    bCMC,
+ BIT7                    spare
+} with { 
+  variant "PRESENCE(iEI = '62'O)";
+  variant (lengthIndicator) "LENGTHTO (bCMC, spare)";        
+  variant (lengthIndicator) "CROSSTAG( length1,        ext = '1'B;
+                                       length2,        ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+//11.3.77 
+// 24.008 10.5.6.13
+type record TMGI_BSSGP
+{
+ OCT1                    iEI,
+ BIT1                    ext,
+ LIN2_2a                 lengthIndicator,
+ OCT3                    mBMS_Service_ID,
+ HEX1                    mccDigit1,
+ HEX1                    mccDigit2,
+ HEX1                    mccDigit3,
+ HEX1                    mncDigit3,
+ HEX1                    mncDigit1,
+ HEX1                    mncDigit2 
+} with { 
+  variant "PRESENCE(iEI = '5C'O)";
+   variant (lengthIndicator) "LENGTHTO
+         (mBMS_Service_ID,mccDigit1,mccDigit2,mccDigit3,mncDigit3,
+      mncDigit1,mncDigit2)";        
+   variant (lengthIndicator) "CROSSTAG( length1,         ext = '1'B;
+                                        length2,         ext = '0'B;)";
+   variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};        
+       
+// 11.3.78 MBMS Stop Cause
+type record MBMS_Stop_Cause
+{
+ OCT1                    iEI,
+ BIT1                    ext,
+ LIN2_2a                 lengthIndicator,
+ HEX1                    causeValue,
+ HEX1                    spare
+} with { 
+  variant "PRESENCE(iEI = '63'O)";
+  variant (lengthIndicator) "LENGTHTO (causeValue, spare)";        
+  variant (lengthIndicator) "CROSSTAG( length1,        ext = '1'B;
+                                       length2,        ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+ 
+// 11.3.79
+type record Source_BSS_to_Target_BSS_Transparent_Container_BSSGP
+{
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,
+  Source_BSS_to_Target_BSS_Transparent_Container_Contents
+      source_BSS_to_Target_BSS_Transparent_Container_Contents
+} with { 
+  variant "PRESENCE(iEI = '64'O)";
+  variant (lengthIndicator) "LENGTHTO (source_BSS_to_Target_BSS_Transparent_Container_Contents)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+type record Source_BSS_to_Target_BSS_Transparent_Container_Contents
+{
+  MS_Radio_Access_Capability        mS_Radio_Access_Capability,
+  Inter_RAT_Handover_Info_BSSGP     inter_RAT_Handover_Info optional,
+  Page_Mode_BSSGP                   page_Mode_BSSGP optional,
+  Container_ID_BSSGP                container_ID optional,
+  Global_TFI_BSSGP                  global_TFI optional,
+  PS_HandoverIndications            pS_HandoverIndications optional,
+  CS_Indication                     cS_Indication optional,
+  E_UTRAN_Inter_RAT_Handover_Info	e_UTRAN_Inter_RAT_Handover_Info optional,
+  IRAT_Measurement_Configuration    iRAT_Measurement_Configuration optional,
+  Source_Cell_ID                    source_Cell_ID optional,
+  IRAT_Measurement_Configuration_Extended_eARFCNs iRAT_Measurement_Configuration_Extended_eARFCNs optional
+};
+
+// 11.3.80
+type record Target_BSS_to_Source_BSS_Transparent_Container
+{
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,
+  Target_BSS_to_Source_BSS_Transparent_Container_Contents
+                         target_BSS_to_Source_BSS_Transparent_Container_Contents
+} with { 
+  variant "PRESENCE(iEI = '65'O)";
+  variant (lengthIndicator) "LENGTHTO (target_BSS_to_Source_BSS_Transparent_Container_Contents)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+//Note: Only  PS_Handover_Command_BSSGP or DTM_Handover_Command is present
+type record Target_BSS_to_Source_BSS_Transparent_Container_Contents
+{
+  PS_Handover_Command_BSSGP  pS_Handover_Command optional,
+  SI_PSI_Container           sI_PSI_Container optional,    //NEW  
+  DTM_Handover_Command       dTM_Handover_Command optional    //NEW  
+}
+
+// 11.3.81
+type record NAS_container_for_PS_Handover
+{
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,
+  NAS_Container_for_PS_HO            nAS_Container_for_PS_HO
+} with { 
+  variant "PRESENCE(iEI = '66'O)";
+  variant (lengthIndicator) "LENGTHTO (nAS_Container_for_PS_HO)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+//24.008 10.5.1.14
+type record NAS_Container_for_PS_HO
+{
+  BIT3          typeOfCipheringAlgorithm,
+  BIT1          spare1,
+  BIT1          oldXID,
+  BIT3          spare2,
+  OCT4          iOV_UI
+}
+
+// 11.3.82
+type record PFCs_to_be_set_up_list
+{
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,
+  integer                number_of_PFCs (1..11),   // note: 0 and 12 .. 255 are reserved!!!
+  Multiple_PFCs_BSSGP    pFCs
+} with { 
+  variant "PRESENCE(iEI = '67'O)";
+  variant (lengthIndicator) "LENGTHTO (number_of_PFCs,pFCs)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+  variant (number_of_PFCs) "UNIT(elements),LENGTHTO(pFCs),FIELDORDER(msb),FIELDLENGTH(8)";
+}
+
+type record Single_PFC_BSSGP
+{
+  PFI                               pFI,
+  GPRS_Timer                        pFT,
+  ABQP                              aBQP,
+  Priority_BSSGP                    allocation_Retention_Priority optional,
+  GPRS_Timer                        t10 optional
+}
+
+type record length (1..11) of Single_PFC_BSSGP Multiple_PFCs_BSSGP;
+
+
+// 11.3.83
+type record List_of_set_up_PFCs_BSSGP
+{
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,
+  integer                number_of_PFCs (0..11),   // note: 12 .. 255 are reserved!!!
+  Multiple_PFIs_BSSGP    pFIs
+} with { 
+  variant "PRESENCE(iEI = '68'O)";
+  variant (lengthIndicator) "LENGTHTO (number_of_PFCs,pFIs)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+  variant (number_of_PFCs) "UNIT(elements),LENGTHTO(pFIs),FIELDORDER(msb),FIELDLENGTH(8)";
+}
+
+type record Single_PFI_BSSGP
+{
+  BIT7  pFI_Value,
+  BIT1  spare
+}
+
+type record length (0..11) of Single_PFI_BSSGP Multiple_PFIs_BSSGP;
+
+
+// 11.3.84 Extended Feature Bitmap
+type record Extended_Feature_Bitmap
+{
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,
+  BIT1                   pS_Handover,
+  BIT1                   gigabitInterface,
+  BIT1                   mOCN,
+  BIT1                   cS_PS_Coordination_Enhancements,
+  BIT4                   spare
+} with { 
+  variant "PRESENCE(iEI = '69'O)";
+  variant (lengthIndicator) "LENGTHTO (pS_Handover,gigabitInterface,mOCN,cS_PS_Coordination_Enhancements,spare)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+
+// 11.3.85
+type record Source_to_Target_Transparent_Container
+{
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,
+  octetstring          source_to_Target_Transparent_Container_Contents //RANAP ASN.1 PER
+} with { 
+  variant "PRESENCE(iEI = '6A'O)";
+  variant (lengthIndicator) "LENGTHTO (source_to_Target_Transparent_Container_Contents)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+
+// 11.3.86
+type record Target_to_Source_Transparent_Container
+{
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,
+  octetstring          handover_to_UTRAN_or_Radio_Bearer_Reconfiguration_radio_interface_message //ASN.1
+} with { 
+  variant "PRESENCE(iEI = '6B'O)";
+  variant (lengthIndicator) "LENGTHTO (handover_to_UTRAN_or_Radio_Bearer_Reconfiguration_radio_interface_message)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+
+
+// 11.3.87
+type record RNC_Identifier_BSSGP
+{
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,
+  HEX1                   mccDigit1,
+  HEX1                   mccDigit2,
+  HEX1                   mccDigit3,
+  HEX1                   mncDigit3,
+  HEX1                   mncDigit1,
+  HEX1                   mncDigit2,
+  OCT2                   lac,
+  OCT1                   rac,    
+  OCT2               	 rNC_ID
+} with { 
+  variant "PRESENCE(iEI = '6C'O)";
+  variant (lengthIndicator) "LENGTHTO (mccDigit1, mccDigit2, mccDigit3, mncDigit3, mncDigit1, mncDigit2,
+                                        lac, rac, rNC_ID)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+ 
+// 11.3.88
+type record Page_Mode_BSSGP
+{
+  OCT1                            iEI,
+  BIT1                            ext,
+  LIN2_2a                         lengthIndicator,
+  BIT2                            page_mode,  // specified in 3GPP TS 44.060
+  BIT6                            reserved
+} with { 
+  variant "PRESENCE(iEI = '6D'O)";
+  variant (lengthIndicator) "LENGTHTO (page_mode,reserved)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+  
+// 11.3.89
+type record Container_ID_BSSGP
+{
+  OCT1                            iEI,
+  BIT1                            ext,
+  LIN2_2a                         lengthIndicator,
+  BIT2                            container_ID,   // specified in 3GPP TS 44.060
+  BIT6                            reserved
+} with { 
+  variant "PRESENCE(iEI = '6E'O)";
+  variant (lengthIndicator) "LENGTHTO (container_ID,reserved)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+
+// 11.3.90
+type record Global_TFI_BSSGP
+{
+  OCT1                            iEI,
+  BIT1                            ext,
+  LIN2_2a                         lengthIndicator,
+  BIT6                            global_TFI,   // specified in 3GPP TS 44.060
+  BIT2                            reserved  
+} with {
+  variant "PRESENCE(iEI = '6F'O)";
+  variant (lengthIndicator) "LENGTHTO (global_TFI,reserved)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+
+// 11.3.91
+type record IMEI_BSSGP
+{
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,
+  IMEI_Value             iMEI 
+} with { 
+  variant "PRESENCE(iEI = '70'O)";
+  variant (lengthIndicator) "LENGTHTO (iMEI)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+type record IMEI_Value
+{
+ BIT3               typeOfIdentity,
+ BIT1               oddevenIndicator,
+ hexstring          digits  length(15)
+}
+
+
+// 11.3.92 Time to MBMS Data Transfer
+type record Time_To_MBMS_Data_Transfer
+{
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,
+  OCT1                   valuePart
+} with { 
+  variant "PRESENCE(iEI = '71'O)";
+  variant (lengthIndicator) "LENGTHTO (valuePart)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+// 11.3.93 MBMS Session Repetition Number
+type record MBMS_Session_Repetition_Number
+{
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,
+  octetstring            repetitionNumber
+} with { 
+  variant "PRESENCE(iEI = '72'O)";
+  variant (lengthIndicator) "LENGTHTO (repetitionNumber)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+
+// 11.3.94
+type record Inter_RAT_Handover_Info_BSSGP
+{
+  OCT1                            iEI,
+  BIT1                            ext,
+  LIN2_2a                         lengthIndicator,
+  octetstring                     inter_RAT_Handover_Information //as specified in 3GPP TS 25.331
+} with { 
+  variant "PRESENCE(iEI = '73'O)";
+  variant (lengthIndicator) "LENGTHTO (inter_RAT_Handover_Information)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+
+// 11.3.95
+type record PS_Handover_Command_BSSGP
+{
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,
+  octetstring            pS_Handover_Command_radio_interface_message
+} with { 
+  variant "PRESENCE(iEI = '74'O)";
+  variant (lengthIndicator) "LENGTHTO (pS_Handover_Command_radio_interface_message)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+// 11.3.95a
+type record PS_HandoverIndications
+{
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,
+  BIT1                   sI_PSI,
+  BIT2                   dMLC_Carriers,
+  BIT5                   spare
+} with { 
+  variant "PRESENCE(iEI = '75'O)";
+  variant (lengthIndicator) "LENGTHTO (sI_PSI,dMLC_Carriers,spare)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+
+// 11.3.95b
+type record  SI_PSI_Container
+{
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,
+  BIT1                   typeField, 
+  SI_PSI_ContainerValue  sI_PSI_ContainerValue
+} with { 
+   variant "PRESENCE(iEI = '76'O)";  
+   variant (lengthIndicator) "LENGTHTO (typeField,sI_PSI_ContainerValue)";
+   variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                        length2,    ext = '0'B;)";
+   variant (ext,lengthIndicator) "FIELDORDER(msb)";
+   variant (sI_PSI_ContainerValue) "CROSSTAG 
+      (
+       sI_message_Container,          typeField ='0'B;
+       pSI_message_Container,         typeField ='1'B;
+      )"; 
+ };   
+
+type union SI_PSI_ContainerValue
+{
+  SI_message_Container   sI_message_Container,
+  PSI_message_Container  pSI_message_Container
+}
+
+type record SI_message_Container 
+{
+  integer           number_of_SI,
+  SI_message_List   sI_message_List
+} with { 
+  variant (number_of_SI) "UNIT(elements),LENGTHTO(sI_message_List),FIELDORDER(msb),FIELDLENGTH(7)";
+}
+
+type record PSI_message_Container
+{
+  integer            number_of_PSI,
+  PSI_message_List   pSI_message_List
+} with { 
+   variant (number_of_PSI) "UNIT(elements),LENGTHTO(pSI_message_List),FIELDORDER(msb),FIELDLENGTH(7)";
+}
+
+type record of SI_message  SI_message_List;
+
+type record of PSI_message  PSI_message_List;
+
+type octetstring SI_message length (21);
+
+type octetstring PSI_message length (22);
+
+
+// 11.3.95c  48.008 CR 240
+type record Active_PFCs_List_BSSGP
+{
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,
+  integer                number_of_PFCs (0..11),   // note: 12 .. 255 are reserved!!!
+  Multiple_PFIs_BSSGP    pFIs
+} with {
+  variant "PRESENCE(iEI = '77'O)";
+  variant (lengthIndicator) "LENGTHTO (number_of_PFCs,pFIs)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+  variant (number_of_PFCs) "UNIT(elements),LENGTHTO(pFIs),FIELDORDER(msb),FIELDLENGTH(8)";
+}
+
+//11.3.96
+type record VelocityData
+{
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,
+  octetstring            velocityDataValue // 23.032
+}with { 
+  variant "PRESENCE(iEI = '78'O)";
+  variant (lengthIndicator) "LENGTHTO (velocityDataValue)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+//11.3.97
+type record DTM_Handover_Command
+{
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,
+  octetstring            dTM_HandoverCommandValue // 44.060
+} with { 
+  variant "PRESENCE(iEI = '79'O)";
+  variant (lengthIndicator) "LENGTHTO (dTM_HandoverCommandValue)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+  
+//11.3.98
+type record CS_Indication 
+{
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,
+  OCT1                   cS_IndicationContents  //48.008
+}  with { 
+  variant "PRESENCE(iEI = '7A'O)";
+  variant (lengthIndicator) "LENGTHTO (cS_IndicationContents)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+// 11.3.99
+type record Requested_GANSS_Assistance_Data
+{  
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,  
+  octetstring            requested_GANSS_Assistance_Data_Value   //49.031
+} with { 
+  variant "PRESENCE(iEI = '7B'O)";
+  variant (lengthIndicator) "LENGTHTO (requested_GANSS_Assistance_Data_Value)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+// 11.3.100
+type record GANSS_Location_Type
+{  
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,  
+  BIT1                   galileo, 
+  BIT7                   spare                                        
+} with { 
+  variant "PRESENCE(iEI = '7C'O)";
+  variant (lengthIndicator) "LENGTHTO (galileo,spare)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+// 11.3.101
+//49.031
+type record GANSS_Positioning_Data
+{  
+  OCT1                         iEI,
+  BIT1                         ext,
+  LIN2_2a                      lengthIndicator,
+  GANSS_Positioning_DataList   gANSS_Positioning_DataList                                        
+} with { 
+  variant "PRESENCE(iEI = '7D'O)";
+  variant (lengthIndicator) "LENGTHTO (gANSS_Positioning_DataList)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+type record of GANSS_Positioning_DataValue GANSS_Positioning_DataList
+
+type record GANSS_Positioning_DataValue
+{
+  BIT3                   usage,
+  BIT3                   gANSS_ID,
+  BIT2                   method    
+}
+
+//11.3.102
+type record Flow_Control_Granularity
+{  
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,
+  BIT2                   granularity,
+  BIT6                   reserved                                           
+} with { 
+  variant "PRESENCE(iEI = '7E'O)";
+  variant (lengthIndicator) "LENGTHTO (granularity,reserved)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+
+//11.3.103
+type record ENB_Identifier
+{  
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,
+  HEX1					 mccDigit1,
+  HEX1					 mccDigit2,
+  HEX1					 mccDigit3,
+  HEX1					 mncDigit3,
+  HEX1					 mncDigit1,
+  HEX1					 mncDigit2,
+  OCT2					 tac,
+  OCTN					 globalEnbID  
+                                      
+} with { 
+  variant "PRESENCE(iEI = '7F'O)";
+  variant (lengthIndicator) "LENGTHTO (mccDigit1, mccDigit2, mccDigit3, mncDigit3, mncDigit1,
+   										mncDigit2, tac, globalEnbID)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+
+//11.3.104
+type record E_UTRAN_Inter_RAT_Handover_Info
+{
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,
+  OCTN					 ue_EUTRA_Capability
+                                      
+} with { 
+  variant "PRESENCE(iEI = '80'O)";		
+  variant (lengthIndicator) "LENGTHTO (ue_EUTRA_Capability)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+
+//11.3.105
+type record Subscriber_Profile_ID_For_RAT_Priority
+{  
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,
+  BIT8					 profile_ID                                                    
+} with { 
+  variant "PRESENCE(iEI = '81'O)";
+  variant (lengthIndicator) "LENGTHTO (profile_ID)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+//11.3.106
+type record Request_For_Inter_RAT_Handover_Info
+{  
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,
+  BIT1                   interRATHandoverInfoRequest,
+  BIT1					 eUTRANinterRATHandoverInfoRequest,
+  BIT6                   spare                                           
+} with { 
+  variant "PRESENCE(iEI = '82'O)"; 
+  variant (lengthIndicator) "LENGTHTO (interRATHandoverInfoRequest,eUTRANinterRATHandoverInfoRequest,spare)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+//11.3.107
+type record Reliable_Inter_RAT_Handover_Info
+{  
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,
+  BIT1                   reliableInterRATHandoverInfoIndicator,
+  BIT7                   spare                                           
+} with { 
+  variant "PRESENCE(iEI = '83'O)";	
+  variant (lengthIndicator) "LENGTHTO (reliableInterRATHandoverInfoIndicator,spare)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+//11.3.108
+type record SON_Transfer_Application_Identity_TLV
+{
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,
+  OCTN                   sON_Transfer_Application_Identity  //3GPP TS 36.413 [36]
+} with {
+  variant "PRESENCE(iEI = '84'O)";
+  variant (lengthIndicator) "LENGTHTO (sON_Transfer_Application_Identity)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+//11.3.109
+type record CSG_Identifier_TLV
+{
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,
+  CSG_Identity           cSG_Identity,  //3GPP TS 23.003, bits 4 to 8 of octet 6 are spare
+  BIT1                   cell_Acces_Mode,
+  BIT7                   spare
+} with {
+  variant "PRESENCE(iEI = '85'O)";
+  variant (lengthIndicator) "LENGTHTO (cSG_Identity,cell_Acces_Mode,spare)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+type record CSG_Identity
+{
+  OCT3					cSG_Id24, 
+  BIT3					cSG_Id3,
+  BIT5					spare // '0'B
+};
+
+//11.3.110
+type record Tracking_Area_Code_TLV
+{
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,
+  OCT3                   valueField  //3GPP TS 24.301
+} with {
+  variant "PRESENCE(iEI = '86'O)";
+  variant (lengthIndicator) "LENGTHTO (valueField)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+//11.3.111
+type record Redirect_Attempt_Flag
+{
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,
+  OCT1                   spare  
+} with {
+  variant "PRESENCE(iEI = '87'O)";
+  variant (lengthIndicator) "LENGTHTO (spare)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)"; 
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";				          
+}
+
+//11.3.112
+type record Redirection_Indication
+{
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator, 
+  BIT8                   reroute_Reject_Cause_value
+} with {
+  variant "PRESENCE(iEI = '88'O)";
+  variant (lengthIndicator) "LENGTHTO (reroute_Reject_Cause_value)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)"; 
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";				       				       
+}
+
+//11.3.113
+type record Redirection_Completed
+{
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,   
+  BIT8                   outcome_value
+} with {
+  variant "PRESENCE(iEI = '89'O)";
+  variant (lengthIndicator) "LENGTHTO (outcome_value)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)";
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";				                
+}
+ 
+//11.3.114
+type record Unconfirmed_Send_State_Variable
+{
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator, 
+  BIT7                   spare,           
+  integer                vU  
+} with {
+  variant "PRESENCE(iEI = '8A'O)";
+  variant (lengthIndicator) "LENGTHTO (spare,vU)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)"; 
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";				       
+  variant (vU) "FIELDLENGTH(9)";
+  variant (vU) "BYTEORDER(last)";				       
+  variant (spare,vU) "FIELDORDER(msb)";				       				       
+}
+
+//11.3.115
+type record IRAT_Measurement_Configuration
+{
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator, 
+  INT6b                  reportingThreshold,
+  BIT1                   repQuant,
+  BIT1                   spare,
+  INT1                   measurementDuration,   
+  Measurement_List       measurement_List
+} with {
+  variant "PRESENCE(iEI = '8B'O)";
+  variant (lengthIndicator) "LENGTHTO (reportingThreshold,repQuant,spare,measurementDuration,measurement_List)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)"; 
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";				       
+}				      
+				      				      
+type record Measurement
+{
+  LIN2_BO_LAST           e_ARFCN,
+  BIT3                   measurementBandwidth,
+  BIT5                   spare
+}
+
+type record of Measurement Measurement_List;
+				       
+type record RNC_Id_with_Transparent_Container_BSSGP 
+{
+  RNC_Identifier_BSSGP  target_RNC_Identifier,
+  Source_to_Target_Transparent_Container
+                               source_to_Target_Transparent_Container
+}
+
+type union Cell_or_RNC_Id_with_Transparent_Container_BSSGP
+{
+  Cell_Id_with_Transparent_Container_BSSGP  cell_Id_with_Transparent_Container,
+  RNC_Id_with_Transparent_Container_BSSGP   rnc_Id_with_Transparent_Container
+}
+
+type record Cell_Id_with_Transparent_Container_BSSGP
+{
+  Cell_Identifier                target_Cell_Identifier,
+  Source_BSS_to_Target_BSS_Transparent_Container_BSSGP
+      source_BSS_to_Target_BSS_Transparent_Container
+}
+
+//11.3.116
+type record SCI
+{
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,
+  OCT1                   service_Class_Value
+} with {
+  variant "PRESENCE(iEI = '8c'O)";
+  variant (lengthIndicator) "LENGTHTO (service_Class_Value)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)"; 
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";				          
+}
+
+//11.3.117
+type record GGSN_PGW_Location
+{
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,
+  BIT3                   gGSN_PGW_Location_Value,
+  BIT5                   spare
+} with {
+  variant "PRESENCE(iEI = '8d'O)";
+  variant (lengthIndicator) "LENGTHTO (gGSN_PGW_Location_Value)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)"; 
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";				          
+}
+
+//11.3.118
+type record Selected_PLMN_ID
+{
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,
+  HEX1                   mccDigit1,
+  HEX1                   mccDigit2,
+  HEX1                   mccDigit3,
+  HEX1                   mncDigit3,
+  HEX1                   mncDigit1,
+  HEX1                   mncDigit2 
+} with {
+  variant "PRESENCE(iEI = '8e'O)";
+  variant (lengthIndicator) "LENGTHTO (mccDigit1,mccDigit2,mccDigit3,mncDigit3,mncDigit1,mncDigit2)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)"; 
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";				          
+}
+
+//11.3.119
+type record Priority_Class_Indicator
+{
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,
+  BIT1                   priority_Class_Indicator_Value,
+  BIT7                   spare
+} with {
+  variant "PRESENCE(iEI = '8f'O)";
+  variant (lengthIndicator) "LENGTHTO (priority_Class_Indicator_Value,spare)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)"; 
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";				          
+}
+
+//11.3.120
+type record Source_Cell_ID
+{
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,
+  TrackingAreaIdentity_BSSGP tracking_Area_Identity,
+  ECGI_BSSGP             eUTRAN_CGI,
+  octetstring            globaleNBID
+} with {
+  variant "PRESENCE(iEI = '90'O)";
+  variant (lengthIndicator) "LENGTHTO (tracking_Area_Identity,eUTRAN_CGI,globaleNBID)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)"; 
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";				          
+}
+type record TrackingAreaIdentity_BSSGP
+{
+  HEX1               mccDigit1,
+  HEX1               mccDigit2,
+  HEX1               mccDigit3,
+  HEX1               mncDigit3,
+  HEX1               mncDigit1,
+  HEX1               mncDigit2,
+  OCT2               tAC
+} 
+
+type record ECGI_BSSGP
+{
+  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)";
+};
+
+
+//11.3.121
+type record IRAT_Measurement_Configuration_Extended_eARFCNs
+{
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,
+  INT6b                  reportingThreshold,
+  BIT1                   repQuant,
+  BIT1                   spare,
+  INT1                   measurementDuration,   
+  Measurement_List_Extended measurement_List
+} with {
+  variant "PRESENCE(iEI = '91'O)";
+  variant (lengthIndicator) "LENGTHTO (reportingThreshold,repQuant,spare,measurementDuration,measurement_List)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)"; 
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";				          
+}
+
+type record Measurement_Extended
+{
+  INT18b_BO_LAST         e_ARFCN,
+  BIT3                   spare,
+  BIT3                   measurementBandwidth
+} with {
+  variant (e_ARFCN,spare,measurementBandwidth) "FIELDORDER(msb)";				          
+}
+type record of Measurement_Extended Measurement_List_Extended;
+
+//11.3.122
+type record EDRX_Parameters
+{
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,
+  BIT4                   eDRX_Cycle_Value,
+  BIT4                   spare
+} with {
+  variant "PRESENCE(iEI = '92'O)";
+  variant (lengthIndicator) "LENGTHTO (eDRX_Cycle_Value,spare)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)"; 
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";				          
+}
+
+//11.3.123
+type record Time_Until_Next_Paging_Occasion
+{
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,
+  INT6b                  minutes,
+  BIT2                   spare,
+  INT6b                  seconds,
+  BIT2                   spare2
+} with {
+  variant "PRESENCE(iEI = '93'O)";
+  variant (lengthIndicator) "LENGTHTO (minutes,spare,seconds,spare2)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)"; 
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";				          
+}
+
+//11.3.124
+type record Old_Routing_Area_Identification
+{
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,
+  HEX1                   mccDigit1,
+  HEX1                   mccDigit2,
+  HEX1                   mccDigit3,
+  HEX1                   mncDigit3,
+  HEX1                   mncDigit1,
+  HEX1                   mncDigit2,
+  OCT2                   lac,
+  OCT1                   rac
+} with {
+  variant "PRESENCE(iEI = '94'O)";
+  variant (lengthIndicator) "LENGTHTO (mccDigit1,mccDigit2,mccDigit3,mncDigit3,mncDigit1,mncDigit2,lac,rac)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)"; 
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";				          
+}
+
+//11.3.125
+type record Attach_Indicator
+{
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,
+  OCT1                   spare
+} with {
+  variant "PRESENCE(iEI = '95'O)";
+  variant (lengthIndicator) "LENGTHTO (spare)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)"; 
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";				          
+}
+
+//11.3.126
+type record PLMN_Identity
+{
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,
+  HEX1                   mccDigit1,
+  HEX1                   mccDigit2,
+  HEX1                   mccDigit3,
+  HEX1                   mncDigit3,
+  HEX1                   mncDigit1,
+  HEX1                   mncDigit2 
+} with {
+  variant "PRESENCE(iEI = '96'O)";
+  variant (lengthIndicator) "LENGTHTO (mccDigit1,mccDigit2,mccDigit3,mncDigit3,mncDigit1,mncDigit2)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)"; 
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";				          
+}
+
+//11.3.127
+type record MME_Query
+{
+  OCT1                   iEI,
+  BIT1                   ext,
+  LIN2_2a                lengthIndicator,
+  OCT1                   spare
+} with {
+  variant "PRESENCE(iEI = '97'O)";
+  variant (lengthIndicator) "LENGTHTO (spare)";
+  variant (lengthIndicator) "CROSSTAG( length1,    ext = '1'B;
+                                       length2,    ext = '0'B;)"; 
+  variant (ext,lengthIndicator) "FIELDORDER(msb)";				          
+}
+
+
+//-----------------------------------------------------------------------------
+// PDUs
+//-----------------------------------------------------------------------------
+
+//10.2.1
+type record PDU_BSSGP_DL_UNITDATA 
+{
+ OCT1                              bssgpPduType,
+ OCT4                              tLLI_current,
+ QoS_Profile_V                     qoS_Profile,
+ PDU_Lifetime                      pDU_Lifetime,
+ MS_Radio_Access_Capability        mS_Radio_Access_Capability optional,
+ Priority_BSSGP                    priority optional,
+ DRX_Parameters                    dRX_Parameters optional,
+ IMSI_BSSGP                        iMSI optional,
+ TLLI_BSSGP                        tLLI_old optional,
+ PFI                               pFI optional,
+ LSA_Information_BSSGP             lSA_Information optional,
+ Service_UTRAN_CCO                 service_UTRAN_CCO optional,
+ Service_Class_Indicator           service_Class_Indicator optional,
+ Subscriber_Profile_ID_For_RAT_Priority  subscriber_Profile_ID_For_RAT_Priority optional,
+ Redirection_Indication            redirection_Indication optional,
+ Redirection_Completed             redirection_Completed optional, 
+ Unconfirmed_Send_State_Variable   unconfirmed_Send_State_Variable optional,
+ SCI                               sCI optional,
+ GGSN_PGW_Location                 gGSN_PGW_Location optional,
+ EDRX_Parameters                   eDRX_Paremeters optional,
+ Old_Routing_Area_Identification   old_Routing_Area_Identification optional,
+ Attach_Indicator                  attach_Indicator optional,
+ Alignment_octets                  alignment_octets optional,
+ LLC_PDU                           lLC_PDU,
+ LLC_PDU                           initialLLC_PDU optional
+} with { variant "PRESENCE(bssgpPduType = '00'O)"; };
+
+//10.2.2
+type record PDU_BSSGP_UL_UNITDATA
+{
+ OCT1                              bssgpPduType,
+ OCT4                              tLLI,
+ QoS_Profile_V                     qoS_Profile,
+ Cell_Identifier                   cell_Identifier,
+ PFI                               pFI optional,
+ LSA_Identifier_List_BSSGP         lSA_Identifier_List optional,
+ Redirect_Attempt_Flag             redirect_Attempt_Flag optional,
+ IMSI_BSSGP                        iMSI_BSSGP optional,
+ Unconfirmed_Send_State_Variable   unconfirmed_Send_State_Variable optional,
+ Selected_PLMN_ID                  selected_PLMN_ID optional,
+ PLMN_Identity                     selected_Operator optional,
+ PLMN_Identity                     cS_Registered_Operator optional, 
+ Alignment_octets                  alignment_octets optional,
+ LLC_PDU                           lLC_PDU
+} with { variant "PRESENCE(bssgpPduType = '01'O)"; };
+
+//10.2.3
+type record PDU_BSSGP_RA_CAPABILITY
+{
+ OCT1                              bssgpPduType,
+ TLLI_BSSGP                        tLLI,
+ MS_Radio_Access_Capability        mS_Radio_Access_Capability
+} with { variant "PRESENCE(bssgpPduType = '02'O)"; };
+
+//10.2.5
+type record PDU_BSSGP_DL_MBMS_UNITDATA
+{
+ OCT1                              bssgpPduType,
+ PDU_Lifetime                      pDU_Lifetime,
+ TMGI_BSSGP                        tMGI,
+ MBMS_Session_Identity             mBMS_Session_Identity optional,
+ Alignment_octets                  alignment_octets optional,
+ LLC_PDU                           lLC_PDU
+} with { variant "PRESENCE(bssgpPduType = '04'O)"; };
+
+
+// 10.2.6; Deleted from spec 7.10.0,kept in prot module for backward compatibility
+type record PDU_BSSGP_UL_MBMS_UNITDATA
+{
+ OCT1                              bssgpPduType,
+ TMGI_BSSGP                        tMGI,
+ MBMS_Session_Identity             mBMS_Session_Identity optional,
+ Alignment_octets                  alignment_octets optional,
+ LLC_PDU                           lLC_PDU
+} with { variant "PRESENCE(bssgpPduType = '05'O)"; };
+
+// 10.3.1
+type record PDU_BSSGP_PAGING_PS 
+{
+ OCT1                              bssgpPduType,
+ IMSI_BSSGP                        iMSI,
+ DRX_Parameters                    dRX_Parameters optional,  
+ Paging_Field4                     paging_Field4,
+ PFI                               pFI optional,
+ ABQP                              aBQP optional,
+ QoS_Profile                       qoS_Profile,
+ TMSI_BSSGP                        pTMSI optional,
+ EDRX_Parameters                   eDRX_Paremeters optional
+} with { variant "PRESENCE(bssgpPduType = '06'O)"; };
+
+//10.3.2
+type record PDU_BSSGP_PAGING_CS
+{
+ OCT1                              bssgpPduType,
+ IMSI_BSSGP                        iMSI,
+ DRX_Parameters                    dRX_Parameters,
+ Paging_Field4                     paging_Field4,
+ TLLI_BSSGP                        tLLI optional,
+ Channel_needed                    channel_needed optional,
+ EMLPP_Priority_BSSGP              eMLPP_Priority optional,
+ TMSI_BSSGP                        tMSI optional,
+ Global_CN_Id_BSSGP                global_CN_Id optional
+} with { variant "PRESENCE(bssgpPduType = '07'O)"; };
+
+
+type union Paging_Field4
+{
+ BVCI                              bVCI,                                      
+ Location_Area                     location_Area,                   
+ Routeing_Area                     routeing_Area,                   
+ BSS_Area_Indication               bSS_Area_Indication                 
+};
+
+//10.3.3
+type record PDU_BSSGP_RA_CAPABILITY_UPDATE
+{
+ OCT1                              bssgpPduType,
+ TLLI_BSSGP                        tLLI,
+ Tag                               tag
+} with { variant "PRESENCE(bssgpPduType = '08'O)"; };
+
+
+//10.3.4
+type record PDU_BSSGP_RA_CAPABILITY_UPDATE_ACK
+{
+ OCT1                              bssgpPduType,
+ TLLI_BSSGP                        tLLI,
+ Tag                               tag,
+ IMSI_BSSGP                        iMSI optional,
+ RA_Cap_UPD_CAUSE                  rA_Cap_UPDATE_CAUSE,
+ MS_Radio_Access_Capability        mS_Radio_Access_Capability optional     
+} with { variant "PRESENCE(bssgpPduType = '09'O)"; };
+
+//10.3.5
+type record PDU_BSSGP_RADIO_STATUS
+{
+  OCT1                              bssgpPduType,
+  TLLI_BSSGP                        tLLI optional,
+  TMSI_BSSGP                        tMSI optional,
+  IMSI_BSSGP                        iMSI optional,
+  Radio_Cause                       radio_Cause
+} with { variant "PRESENCE(bssgpPduType = '0A'O)"; };
+
+//10.3.6
+type record PDU_BSSGP_SUSPEND
+{
+ OCT1                              bssgpPduType,
+ TLLI_BSSGP                        tLLI,        
+ Routeing_Area                     routeing_Area  
+} with { variant "PRESENCE(bssgpPduType = '0B'O)"; };
+
+// 10.3.7
+type record PDU_BSSGP_SUSPEND_ACK
+{
+ OCT1                              bssgpPduType,
+ TLLI_BSSGP                        tLLI,        
+ Routeing_Area                     routeing_Area ,
+ Suspend_Reference_Number          suspend_Reference_Number
+} with { variant "PRESENCE(bssgpPduType = '0C'O)"; };
+
+// 10.3.8
+type record PDU_BSSGP_SUSPEND_NACK
+{
+ OCT1                          bssgpPduType,
+ TLLI_BSSGP                    tLLI,    
+ Routeing_Area                 routeing_Area,
+ Cause_BSSGP                   cause optional
+} with { variant "PRESENCE(bssgpPduType = '0D'O)"; };
+
+// 10.3.9
+type record PDU_BSSGP_RESUME
+{
+ OCT1                              bssgpPduType,
+ TLLI_BSSGP                        tLLI,        
+ Routeing_Area                     routeing_Area,
+ Suspend_Reference_Number          suspend_Reference_Number
+} with { variant "PRESENCE(bssgpPduType = '0E'O)"; };
+
+//10.3.10
+type record PDU_BSSGP_RESUME_ACK
+{
+ OCT1                              bssgpPduType,
+ TLLI_BSSGP                        tLLI,        
+ Routeing_Area                     routeing_Area
+} with { variant "PRESENCE(bssgpPduType = '0F'O)"; };
+
+// 10.3.11
+type record PDU_BSSGP_RESUME_NACK
+{
+ OCT1                              bssgpPduType,
+ TLLI_BSSGP                        tLLI,        
+ Routeing_Area                     routeing_Area,
+ Cause_BSSGP                       cause optional
+} with { variant "PRESENCE(bssgpPduType = '10'O)"; };
+
+// 10.3.12
+type record PDU_BSSGP_PAGING_PS_REJECT
+{
+ OCT1                              bssgpPduType,
+ IMSI_BSSGP                        iMSI,
+ TMSI_BSSGP                        pTMSI optional,
+ Time_Until_Next_Paging_Occasion   time_Until_Next_Paging_Occasion
+} with { variant "PRESENCE(bssgpPduType = '11'O)"; };
+
+// 10.3.13
+type record PDU_BSSGP_DUMMY_PAGING_PS
+{
+ OCT1                              bssgpPduType,
+ IMSI_BSSGP                        iMSI,
+ Routeing_Area                     routeing_Area  optional,
+ EDRX_Parameters                   eDRX_Paremeters optional
+} with { variant "PRESENCE(bssgpPduType = '12'O)"; };
+
+// 10.3.14
+type record PDU_BSSGP_DUMMY_PAGING_PS_RESPONSE
+{
+ OCT1                              bssgpPduType,
+ IMSI_BSSGP                        iMSI,
+ Time_Until_Next_Paging_Occasion   time_Until_Next_Paging_Occasion
+} with { variant "PRESENCE(bssgpPduType = '13'O)"; };
+
+// 10.3.15
+type record PDU_BSSGP_MS_REGISTRATION_ENQUIRY_RESPONSE
+{
+ OCT1                              bssgpPduType,
+ IMSI_BSSGP                        iMSI,
+ PLMN_Identity                     pS_Registered_Operator optional
+} with { variant "PRESENCE(bssgpPduType = '15'O)"; };
+
+// 10.3.15
+type record PDU_BSSGP_MS_REGISTRATION_ENQUIRY
+{
+ OCT1                              bssgpPduType,
+ IMSI_BSSGP                        iMSI,
+ MME_Query                         mME_Query optional
+} with { variant "PRESENCE(bssgpPduType = '14'O)"; };
+
+// 10.4.1
+type record PDU_BSSGP_FLUSH_LL
+{
+  OCT1                              bssgpPduType,
+  TLLI_BSSGP                        tLLI,        
+  BVCI                              bVCI_old,
+  BVCI                              bVCI_new optional,
+  NSEI_BSSGP                        nSEI optional
+} with { variant "PRESENCE(bssgpPduType = '2A'O)"; };
+
+// 10.4.2 
+type record PDU_BSSGP_FLUSH_LL_ACK
+{
+  OCT1                              bssgpPduType,
+  TLLI_BSSGP                        tLLI,        
+  Flush_Action                      flush_Action,
+  BVCI                              bVCI_new optional,
+  Number_of_octets_affected         number_of_octets_affected,
+  NSEI_BSSGP                        nSEI optional
+} with { variant "PRESENCE(bssgpPduType = '2B'O)"; };
+
+// 10.4.3
+type record PDU_BSSGP_LLC_DISCARDED
+{
+ OCT1                        bssgpPduType,
+ TLLI_BSSGP                  tLLI,    
+ LLC_Frames_Discarded        lLC_Frames_Discarded,
+ BVCI                        bVCI,
+ Number_of_octets_affected   number_of_octets_deleted,
+ PFI                         pFI optional
+} with { variant "PRESENCE(bssgpPduType = '2C'O)"; };
+
+// 10.4.4
+type record PDU_BSSGP_FLOW_CONTROL_BVC
+{
+ OCT1                       bssgpPduType,
+ Tag                        tag,
+ BVC_Bucket_Size            bVC_Bucket_Size,
+ Bucket_Leak_Rate           bucket_Leak_Rate,
+ Bmax_default_MS            bmax_default_MS,
+ R_default_MS               r_default_MS,
+ Bucket_Full_Ratio          bucket_Full_Ratio optional,  
+ BVC_Measurement            bVC_Measurement optional,
+ Flow_Control_Granularity   flow_Control_Granularity optional 
+} with { variant "PRESENCE(bssgpPduType = '26'O)"; };
+
+// 10.4.5
+type record PDU_BSSGP_FLOW_CONTROL_BVC_ACK
+{
+ OCT1                        bssgpPduType,
+ Tag                         tag
+} with { variant "PRESENCE(bssgpPduType = '27'O)"; };
+
+// 10.4.6
+type record PDU_BSSGP_FLOW_CONTROL_MS
+{
+ OCT1                        bssgpPduType,
+ TLLI_BSSGP                  tLLI,    
+ Tag                         tag,
+ MS_Bucket_Size              mS_Bucket_Size,
+ Bucket_Leak_Rate            bucket_Leak_Rate,
+ Bucket_Full_Ratio           bucket_Full_Ratio optional,
+ Flow_Control_Granularity   flow_Control_Granularity optional 
+} with { variant "PRESENCE(bssgpPduType = '28'O)"; };        
+
+// 10.4.7
+type record PDU_BSSGP_FLOW_CONTROL_MS_ACK
+{
+ OCT1                         bssgpPduType,
+ TLLI_BSSGP                   tLLI,    
+ Tag                          tag
+} with { variant "PRESENCE(bssgpPduType = '29'O)"; };
+
+
+// 10.4.8
+type record PDU_BSSGP_BVC_BLOCK        
+{
+ OCT1                          bssgpPduType,
+ BVCI                          bVCI,
+ Cause_BSSGP                   cause 
+} with { variant "PRESENCE(bssgpPduType = '20'O)"; };
+
+// 10.4.9
+type record PDU_BSSGP_BVC_BLOCK_ACK
+{
+ OCT1                         bssgpPduType,
+ BVCI                         bVCI
+} with { variant "PRESENCE(bssgpPduType = '21'O)"; };
+
+// 10.4.10
+type record PDU_BSSGP_BVC_UNBLOCK
+{
+ OCT1                         bssgpPduType,
+ BVCI                         bVCI
+} with { variant "PRESENCE(bssgpPduType = '24'O)"; };
+
+// 10.4.11
+type record PDU_BSSGP_BVC_UNBLOCK_ACK
+{
+ OCT1                         bssgpPduType,
+ BVCI                         bVCI
+} with { variant "PRESENCE(bssgpPduType = '25'O)"; };
+
+// 10.4.12
+type record PDU_BSSGP_BVC_RESET
+{
+ OCT1                              bssgpPduType,
+ BVCI                              bVCI,
+ Cause_BSSGP                       cause,
+ Cell_Identifier                   cell_Identifier optional, 
+ Feature_bitmap                    feature_bitmap optional,
+ Extended_Feature_Bitmap           extended_Feature_Bitmap optional
+} with { variant "PRESENCE(bssgpPduType = '22'O)"; };
+
+// 10.4.13 
+type record PDU_BSSGP_BVC_RESET_ACK
+{
+ OCT1                              bssgpPduType,
+ BVCI                              bVCI,
+ Cell_Identifier                   cell_Identifier optional,
+ Feature_bitmap                    feature_bitmap optional,
+ Extended_Feature_Bitmap           extended_Feature_Bitmap optional
+} with { variant "PRESENCE(bssgpPduType = '23'O)"; };
+
+// 10.4.14
+type record PDU_BSSGP_STATUS
+{
+ OCT1                              bssgpPduType,
+ Cause_BSSGP                       cause,
+ BVCI                              bVCI optional,   
+ PDU_in_Error                      pDU_in_Error optional 
+} with { variant "PRESENCE(bssgpPduType = '41'O)"; };
+
+// 10.4.15
+type record PDU_BSSGP_SGSN_INVOKE_TRACE
+{
+  OCT1                              bssgpPduType,
+  Trace_Type_BSSGP                  traceType,
+  Trace_Reference_BSSGP             traceReference,
+  Trigger_Id_BSSGP                  triggerId optional,
+  Mobile_Id_BSSGP                   mobileId optional,
+  OMC_Id_BSSGP                      omcId optional,
+  TransactionId_BSSGP               transactionId optional
+} with { variant "PRESENCE(bssgpPduType = '40'O)"; };
+
+// 10.4.16
+type record PDU_BSSGP_DOWNLOAD_BSS_PFC
+{
+ OCT1                              bssgpPduType,
+ TLLI_BSSGP                        tLLI,
+ PFI                               pFI         
+} with { variant "PRESENCE(bssgpPduType = '50'O)"; };
+
+// 10.4.17
+type record PDU_BSSGP_CREATE_BSS_PFC
+{
+  OCT1                              		bssgpPduType,
+  TLLI_BSSGP                       		 	tLLI,
+  IMSI_BSSGP                        		iMSI optional,
+  PFI                               		pFI,         
+  GPRS_Timer                        		pFT,
+  ABQP                              		aBQP,
+  Service_UTRAN_CCO                 		service_UTRAN_CCO optional,
+  MS_Radio_Access_Capability        		mS_Radio_Access_Capability optional,
+  Priority_BSSGP                  	  		allocation_Retention_Priority optional, 
+  GPRS_Timer                        		t10 optional,
+  Inter_RAT_Handover_Info_BSSGP     		inter_RAT_Handover_Info optional,
+  E_UTRAN_Inter_RAT_Handover_Info		  	e_UTRAN_Inter_RAT_Handover_Info optional,
+  Subscriber_Profile_ID_For_RAT_Priority	subscriber_Profile_ID_For_RAT optional
+  
+  
+} with { variant "PRESENCE(bssgpPduType = '51'O)"; };
+
+// 10.4.18
+type record PDU_BSSGP_CREATE_BSS_PFC_ACK
+{
+ OCT1                             bssgpPduType,
+ TLLI_BSSGP                       tLLI,
+ PFI                              pFI, 
+ ABQP                             aBQP,
+ Cause_BSSGP                      cause optional
+} with { variant "PRESENCE(bssgpPduType = '52'O)"; };
+
+// 10.4.19
+type record PDU_BSSGP_CREATE_BSS_PFC_NACK
+{
+ OCT1                             bssgpPduType,
+ TLLI_BSSGP                       tLLI,
+ PFI                              pFI, 
+ Cause_BSSGP                      cause
+} with { variant "PRESENCE(bssgpPduType = '53'O)"; };
+
+// 10.4.20        
+type record PDU_BSSGP_MODIFY_BSS_PFC
+{
+ OCT1                         bssgpPduType,
+ TLLI_BSSGP                   tLLI,
+ PFI                          pFI, 
+ ABQP                         aBQP
+} with { variant "PRESENCE(bssgpPduType = '54'O)"; };
+                
+// 10.4.21
+type record PDU_BSSGP_MODIFY_BSS_PFC_ACK
+{
+ OCT1                           bssgpPduType,
+ TLLI_BSSGP                     tLLI,
+ PFI                            pFI, 
+ GPRS_Timer                     pFT,
+ ABQP                           aBQP
+} with { variant "PRESENCE(bssgpPduType = '55'O)"; };
+
+// 10.4.22
+type record PDU_BSSGP_DELETE_BSS_PFC
+{
+  OCT1                           bssgpPduType,
+  TLLI_BSSGP                     tLLI,
+  PFI                            pFI
+} with { variant "PRESENCE(bssgpPduType = '56'O)"; };
+
+// 10.4.23
+type record PDU_BSSGP_DELETE_BSS_PFC_ACK
+{
+  OCT1                           bssgpPduType,
+  TLLI_BSSGP                     tLLI,
+  PFI                            pFI
+} with { variant "PRESENCE(bssgpPduType = '57'O)"; };
+
+// 10.4.24
+type record PDU_BSSGP_FLOW_CONTROL_PFC        
+{
+ OCT1                         bssgpPduType,
+ TLLI_BSSGP                   tLLI,
+ Tag                          tag,
+ MS_Bucket_Size               mS_Bucket_Size optional,
+ Bucket_Leak_Rate             bucket_Leak_Rate optional,
+ Bucket_Full_Ratio            bucket_Full_Ratio optional,
+ PFC_flow_control_parameters  pFC_flow_control_parameters,
+ Flow_Control_Granularity     flow_Control_Granularity optional
+
+} with { variant "PRESENCE(bssgpPduType = '2D'O)"; };
+
+// 10.4.25        
+type record PDU_BSSGP_FLOW_CONTROL_PFC_ACK
+{
+ OCT1                           bssgpPduType,
+ TLLI_BSSGP                     tLLI,
+ Tag                            tag
+} with { variant "PRESENCE(bssgpPduType = '2E'O)"; };
+
+// 10.4.26        
+type record PDU_BSSGP_DELETE_BSS_PFC_REQ
+{
+  OCT1                             bssgpPduType,
+  TLLI_BSSGP                       tLLI,
+  PFI                              pFI,
+  Cause_BSSGP                      cause
+} with { variant "PRESENCE(bssgpPduType = '58'O)"; };
+
+// 10.4.27
+type record PDU_BSSGP_PS_HANDOVER_REQUIRED
+{
+  OCT1                           bssgpPduType,
+  TLLI_BSSGP                     tLLI,
+  Cause_BSSGP                    cause,
+  Cell_Identifier                source_Cell_Identifier,
+  Cell_or_RNC_Id_with_Transparent_Container_BSSGP
+                                 cell_or_RNC_Id_with_Transparent_Container,
+  Active_PFCs_List_BSSGP         active_PFCs_List,
+  ENB_Identifier				 target_ENB_Identifier optional,
+  Reliable_Inter_RAT_Handover_Info
+  								 reliable_Inter_RAT_Handover_Info optional,
+  CSG_Identifier_TLV             cSG_Identifier optional,
+  Tracking_Area_Code_TLV         tracking_Area_Code optional
+  } with { variant "PRESENCE(bssgpPduType = '59'O)"; };
+
+
+// 10.4.28
+type record PDU_BSSGP_PS_HANDOVER_REQUIRED_ACK
+{
+  OCT1                           bssgpPduType,
+  TLLI_BSSGP                     tLLI,
+  List_of_set_up_PFCs_BSSGP      list_of_set_up_PFCs,
+  Target_BSS_to_Source_BSS_Transparent_Container
+                                 target_BSS_to_Source_BSS_Transparent_Container optional,
+  Target_to_Source_Transparent_Container
+                                 target_to_Source_Transparent_Container optional
+} with { variant "PRESENCE(bssgpPduType = '5A'O)"; };
+
+
+// 10.4.29
+type record PDU_BSSGP_PS_HANDOVER_REQUIRED_NACK
+{
+  OCT1                           bssgpPduType,
+  TLLI_BSSGP                     tLLI,
+  Cause_BSSGP                    cause
+} with { variant "PRESENCE(bssgpPduType = '5B'O)"; }; 
+
+
+// 10.4.30
+type record PDU_BSSGP_PS_HANDOVER_REQUEST
+{
+  OCT1                           bssgpPduType,
+  TLLI_BSSGP                     tLLI,
+  IMSI_BSSGP                     iMSI,
+  Cause_BSSGP                    cause,
+  Cell_Identifier                source_Cell_Identifier optional,
+  RNC_Identifier_BSSGP           source_RNC_Identifier optional,
+  Cell_Identifier                target_Cell_Identifier optional, // it is mandatory
+  Source_BSS_to_Target_BSS_Transparent_Container_BSSGP
+                                 source_BSS_to_Target_BSS_Transparent_Container_BSSGP,
+  PFCs_to_be_set_up_list         pFCs_to_be_set_up_list,
+  NAS_container_for_PS_Handover  nAS_container_for_PS_Handover optional,
+  Service_UTRAN_CCO              service_UTRAN_CCO optional,
+  Subscriber_Profile_ID_For_RAT_Priority
+  								 subscriber_Profile_ID_For_RAT_Priority optional,
+  Reliable_Inter_RAT_Handover_Info
+  								 reliable_Inter_RAT_Handover_Info optional
+}  with { variant "PRESENCE(bssgpPduType = '5C'O)"; };
+
+
+// 10.4.31
+type record PDU_BSSGP_PS_HANDOVER_REQUEST_ACK
+{
+  OCT1                           bssgpPduType,
+  TLLI_BSSGP                     tLLI,
+  List_of_set_up_PFCs_BSSGP      list_of_set_up_PFCs,
+  Target_BSS_to_Source_BSS_Transparent_Container
+                                 target_BSS_to_Source_BSS_Transparent_Container
+} with { variant "PRESENCE(bssgpPduType = '5D'O)"; };
+
+
+// 10.4.32
+type record PDU_BSSGP_PS_HANDOVER_REQUEST_NACK
+{
+  OCT1                           bssgpPduType,
+  TLLI_BSSGP                     tLLI,
+  Cause_BSSGP                    cause
+} with { variant "PRESENCE(bssgpPduType = '5E'O)"; };
+
+
+// 10.4.33
+type record PDU_BSSGP_PS_HANDOVER_COMPLETE
+{
+  OCT1                           bssgpPduType,
+  TLLI_BSSGP                     tLLI,
+  IMSI_BSSGP                     iMSI,
+  Cell_Identifier                target_Cell_Identifier optional,
+  Request_For_Inter_RAT_Handover_Info
+  								 request_For_Inter_RAT_Handover_Info optional
+} with { variant "PRESENCE(bssgpPduType = '91'O)"; };
+
+
+// 10.4.34
+type record PDU_BSSGP_PS_HANDOVER_CANCEL
+{
+  OCT1                           bssgpPduType,
+  TLLI_BSSGP                     tLLI,
+  Cause_BSSGP                    cause,
+  Cell_Identifier                source_Cell_Identifier,
+  Cell_Identifier                target_Cell_Identifier optional,
+  RNC_Identifier_BSSGP           target_RNC_Identifier optional,
+  ENB_Identifier				 target_Enb_Identifier optional
+} with { variant "PRESENCE(bssgpPduType = '92'O)"; };
+
+// 10.4.35
+type record PDU_BSSGP_PS_HANDOVER_COMPLETE_ACK
+{
+  OCT1                            bssgpPduType,
+  TLLI_BSSGP                      tLLI,
+  Inter_RAT_Handover_Info_BSSGP   inter_RAT_Handover_Info_BSSGP,
+  E_UTRAN_Inter_RAT_Handover_Info e_UTRAN_Inter_RAT_Handover_Info optional
+} with { variant "PRESENCE(bssgpPduType = '93'O)";};
+
+// 10.4.36
+type record PDU_BSSGP_OVERLOAD
+{
+  OCT1                            bssgpPduType,
+  Priority_Class_Indicator        priority_Class_Indicator
+} with { variant "PRESENCE(bssgpPduType = '42'O)";};
+
+// 10.5.1
+type record PDU_BSSGP_PERFORM_LOCATION_REQUEST
+{
+  OCT1                           bssgpPduType,
+  TLLI_BSSGP                     tLLI,
+  IMSI_BSSGP                     iMSI,
+  DRX_Parameters                 dRX_Parameters optional,
+  BVCI                           bVCI,
+  NSEI_BSSGP                     nSEI,
+  Location_Type_BSSGP            location_Type,
+  Cell_Identifier                cell_Identifier,
+  LCS_Capability_BSSGP           lCS_Capability optional,
+  LCS_Priority_BSSGP             lCS_Priority optional,
+  LCS_QoS_BSSGP                  lCS_QoS optional,
+  LCS_Client_Type_BSSGP          lCS_Client_Type optional,
+  Requested_GPS_Assistance_Data_BSSGP  requested_GPS_Assistance_Data optional,
+  IMEI_BSSGP                     iMEI optional,
+  GANSS_Location_Type            gANSS_Location_Type optional,
+  Requested_GANSS_Assistance_Data requested_GANSS_Assistance_Data optional,
+  EDRX_Parameters                eDRX_Parameters optional
+} with { variant "PRESENCE(bssgpPduType = '60'O)"; };
+
+
+// 10.5.2
+type record PDU_BSSGP_PERFORM_LOCATION_RESPONSE
+{
+  OCT1                           bssgpPduType,
+  TLLI_BSSGP                     tLLI,
+  BVCI                           bVCI,
+  Location_Estimate_BSSGP        location_Estimate optional,
+  Positioning_Data_BSSGP         positioning_Data optional,
+  Deciphering_Keys_BSSGP         deciphering_Keys optional,
+  LCS_Cause_BSSGP                lCS_Cause optional,
+  VelocityData                  velocityData optional,
+  GANSS_Positioning_Data         gANSS_Positioning_Data optional  
+} with { variant "PRESENCE(bssgpPduType = '61'O)"; };
+
+
+// 10.5.3
+type record PDU_BSSGP_PERFORM_LOCATION_ABORT
+{
+  OCT1                           bssgpPduType,
+  TLLI_BSSGP                     tLLI,
+  BVCI                           bVCI,
+  LCS_Cause_BSSGP                lCS_Cause
+} with { variant "PRESENCE(bssgpPduType = '62'O)"; };
+
+
+// 10.5.4
+type record PDU_BSSGP_POSITION_COMMAND
+{
+  OCT1                           bssgpPduType,
+  TLLI_BSSGP                     tLLI,
+  BVCI                           bVCI,
+  RRLP_Flags_BSSGP               rRLP_Flags,
+  RRLP_APDU_BSSGP                rRLP_APDU
+} with { variant "PRESENCE(bssgpPduType = '63'O)"; };
+
+
+// 10.5.5
+type record PDU_BSSGP_POSITION_RESPONSE
+{
+  OCT1                           bssgpPduType,
+  TLLI_BSSGP                     tLLI,
+  BVCI                           bVCI,
+  RRLP_Flags_BSSGP               rRLP_Flags optional,
+  RRLP_APDU_BSSGP                rRLP_APDU optional,
+  LCS_Cause_BSSGP                lCS_Cause optional  
+} with { variant "PRESENCE(bssgpPduType = '64'O)"; };
+
+// 10.6.1  
+type record PDU_BSSGP_RAN_INFORMATION_REQUEST
+{
+ OCT1                            bssgpPduType,
+ RIM_Routing_Information         destination_Cell_Identifier,
+ RIM_Routing_Information         source_Cell_Identifier,
+ RAN_Information_Request_RIM_Container  rIM_Container
+} with { variant "PRESENCE(bssgpPduType = '71'O)"; };
+      
+// 10.6.2
+type record PDU_BSSGP_RAN_INFORMATION
+{
+ OCT1                              bssgpPduType,
+ RIM_Routing_Information           destination_Cell_Identifier,
+ RIM_Routing_Information           source_Cell_Identifier,
+ RAN_Information_RIM_Container     rIM_Container
+} with { variant "PRESENCE(bssgpPduType = '70'O)"; };
+
+// 10.6.3
+type record PDU_BSSGP_RAN_INFORMATION_ACK
+{
+ OCT1                              bssgpPduType,
+ RIM_Routing_Information           destination_Cell_Identifier,
+ RIM_Routing_Information           source_Cell_Identifier,
+ RAN_Information_Ack_RIM_Container rIM_Container
+} with { variant "PRESENCE(bssgpPduType = '72'O)"; };
+
+// 10.6.4
+type record PDU_BSSGP_RAN_INFORMATION_ERROR
+{
+ OCT1                              bssgpPduType,
+ RIM_Routing_Information           destination_Cell_Identifier,
+ RIM_Routing_Information           source_Cell_Identifier,
+ RAN_Information_Error_RIM_Container  rIM_Container
+} with { variant "PRESENCE(bssgpPduType = '73'O)"; };
+
+// 10.6.5
+type record PDU_BSSGP_RAN_INFORMATION_APPLICATION_ERROR
+{
+ OCT1                              bssgpPduType,
+ RIM_Routing_Information           destination_Cell_Identifier,
+ RIM_Routing_Information           source_Cell_Identifier,
+ RAN_Information_Application_Error_RIM_Container  rIM_Container
+} with { variant "PRESENCE(bssgpPduType = '74'O)"; };
+
+// 10.7.1
+type record PDU_BSSGP_MBMS_SESSION_START_REQUEST
+{
+ OCT1                        bssgpPduType,
+ TMGI_BSSGP                  tMGI,
+ MBMS_Session_Identity       mBMS_Session_Identity optional,
+ ABQP                        aBQP,
+ MBMS_Service_Area_Identity_List   mBMS_Service_Area_Identity_List,
+ MBMS_Routing_Area_List      mBMS_Routing_Area_List,
+ MBMS_Session_Duration       mBMS_Session_Duration,
+ MBMS_Session_Information    mBMS_Session_Information,
+ Time_To_MBMS_Data_Transfer  time_To_MBMS_Data_Transfer,
+ Priority_BSSGP              allocation_Retention_Priority optional,
+ MBMS_Session_Repetition_Number  mBMS_Session_Repetition_Number optional
+} with { variant "PRESENCE(bssgpPduType = '80'O)"; };
+
+// 10.7.2
+type record PDU_BSSGP_MBMS_SESSION_START_RESPONSE
+{
+ OCT1                        bssgpPduType,
+ TMGI_BSSGP                  tMGI,
+ MBMS_Session_Identity       mBMS_Session_Identity optional,
+ MBMS_Response               mBMS_Response
+} with { variant "PRESENCE(bssgpPduType = '81'O)"; };
+
+// 10.7.3
+type record PDU_BSSGP_MBMS_SESSION_STOP_REQUEST
+{
+ OCT1                       bssgpPduType,
+ TMGI_BSSGP                 tMGI,
+ MBMS_Session_Identity      mBMS_Session_Identity optional,
+ MBMS_Stop_Cause            mBMS_Stop_Cause
+} with { variant "PRESENCE(bssgpPduType = '82'O)"; };
+
+// 10.7.4
+type record PDU_BSSGP_MBMS_STOP_RESPONSE
+{
+ OCT1                              bssgpPduType,
+ TMGI_BSSGP                        tMGI,
+ MBMS_Session_Identity             mBMS_Session_Identity optional,
+ MBMS_Response                     mBMS_Response
+} with { variant "PRESENCE(bssgpPduType = '83'O)"; };
+
+
+// 10.7.5
+type record PDU_BSSGP_SESSION_UPDATE_REQUEST
+{
+ OCT1                            bssgpPduType,
+ TMGI_BSSGP                      tMGI,
+ MBMS_Session_Identity           mBMS_Session_Identity optional,
+ ABQP                            aBQP,
+ MBMS_Service_Area_Identity_List mBMS_Service_Area_Identity_List,
+ MBMS_Routing_Area_List          mBMS_Routing_Area_List,
+ MBMS_Session_Duration           mBMS_Session_Duration,
+ MBMS_Session_Information        mBMS_Session_Information,
+ Time_To_MBMS_Data_Transfer      time_To_MBMS_Data_Transfer, 
+ Priority_BSSGP                  allocation_Retention_Priority optional,
+ MBMS_Session_Repetition_Number  mBMS_Session_Repetition_Number optional  
+} with { variant "PRESENCE(bssgpPduType = '84'O)"; };
+
+
+// 10.7.6
+type record PDU_BSSGP_SESSION_UPDATE_RESPONSE
+{
+ OCT1                            bssgpPduType,
+ TMGI_BSSGP                      tMGI,
+ MBMS_Session_Identity           mBMS_Session_Identity optional, 
+ MBMS_Response                   mBMS_Response 
+} with { variant "PRESENCE(bssgpPduType = '85'O)"; };
+
+
+
+type union PDU_BSSGP
+{
+
+  PDU_BSSGP_DL_UNITDATA                   pDU_BSSGP_DL_UNITDATA,
+  PDU_BSSGP_UL_UNITDATA                   pDU_BSSGP_UL_UNITDATA,
+  PDU_BSSGP_RA_CAPABILITY                 pDU_BSSGP_RA_CAPABILITY,
+  PDU_BSSGP_DL_MBMS_UNITDATA              pDU_BSSGP_DL_MBMS_UNITDATA,
+  PDU_BSSGP_UL_MBMS_UNITDATA              pDU_BSSGP_UL_MBMS_UNITDATA,
+  PDU_BSSGP_PAGING_PS                     pDU_BSSGP_PAGING_PS,
+  PDU_BSSGP_PAGING_CS                     pDU_BSSGP_PAGING_CS,
+  PDU_BSSGP_RA_CAPABILITY_UPDATE          pDU_BSSGP_RA_CAPABILITY_UPDATE,
+  PDU_BSSGP_RA_CAPABILITY_UPDATE_ACK      pDU_BSSGP_RA_CAPABILITY_UPDATE_ACK,
+  PDU_BSSGP_RADIO_STATUS                  pDU_BSSGP_RADIO_STATUS,
+  PDU_BSSGP_SUSPEND                       pDU_BSSGP_SUSPEND,
+  PDU_BSSGP_SUSPEND_ACK                   pDU_BSSGP_SUSPEND_ACK,
+  PDU_BSSGP_SUSPEND_NACK                  pDU_BSSGP_SUSPEND_NACK,
+  PDU_BSSGP_RESUME                        pDU_BSSGP_RESUME,
+  PDU_BSSGP_RESUME_ACK                    pDU_BSSGP_RESUME_ACK,
+  PDU_BSSGP_RESUME_NACK                   pDU_BSSGP_RESUME_NACK,
+  PDU_BSSGP_PAGING_PS_REJECT              pDU_BSSGP_PAGING_PS_REJECT,
+  PDU_BSSGP_DUMMY_PAGING_PS               pDU_BSSGP_DUMMY_PAGING_PS,
+  PDU_BSSGP_DUMMY_PAGING_PS_RESPONSE      pDU_BSSGP_DUMMY_PAGING_PS_RESPONSE,
+  PDU_BSSGP_MS_REGISTRATION_ENQUIRY_RESPONSE pDU_BSSGP_MS_REGISTRATION_ENQUIRY_RESPONSE,
+  PDU_BSSGP_MS_REGISTRATION_ENQUIRY       pDU_BSSGP_MS_REGISTRATION_ENQUIRY,
+  PDU_BSSGP_FLUSH_LL                      pDU_BSSGP_FLUSH_LL,
+  PDU_BSSGP_FLUSH_LL_ACK                  pDU_BSSGP_FLUSH_LL_ACK,
+  PDU_BSSGP_LLC_DISCARDED                 pDU_BSSGP_LLC_DISCARDED,
+  PDU_BSSGP_FLOW_CONTROL_BVC              pDU_BSSGP_FLOW_CONTROL_BVC,
+  PDU_BSSGP_FLOW_CONTROL_BVC_ACK          pDU_BSSGP_FLOW_CONTROL_BVC_ACK,
+  PDU_BSSGP_FLOW_CONTROL_MS               pDU_BSSGP_FLOW_CONTROL_MS,
+  PDU_BSSGP_FLOW_CONTROL_MS_ACK           pDU_BSSGP_FLOW_CONTROL_MS_ACK,
+  PDU_BSSGP_FLOW_CONTROL_PFC              pDU_BSSGP_FLOW_CONTROL_PFC,
+  PDU_BSSGP_FLOW_CONTROL_PFC_ACK          pDU_BSSGP_FLOW_CONTROL_PFC_ACK,
+  PDU_BSSGP_STATUS                        pDU_BSSGP_STATUS,
+  PDU_BSSGP_BVC_BLOCK                     pDU_BSSGP_BVC_BLOCK,
+  PDU_BSSGP_BVC_BLOCK_ACK                 pDU_BSSGP_BVC_BLOCK_ACK,
+  PDU_BSSGP_BVC_UNBLOCK                   pDU_BSSGP_BVC_UNBLOCK,
+  PDU_BSSGP_BVC_UNBLOCK_ACK               pDU_BSSGP_BVC_UNBLOCK_ACK,
+  PDU_BSSGP_BVC_RESET                     pDU_BSSGP_BVC_RESET,
+  PDU_BSSGP_BVC_RESET_ACK                 pDU_BSSGP_BVC_RESET_ACK,
+  PDU_BSSGP_SGSN_INVOKE_TRACE             pDU_BSSGP_SGSN_INVOKE_TRACE,
+  PDU_BSSGP_DOWNLOAD_BSS_PFC              pDU_BSSGP_DOWNLOAD_BSS_PFC,
+  PDU_BSSGP_CREATE_BSS_PFC                pDU_BSSGP_CREATE_BSS_PFC,
+  PDU_BSSGP_CREATE_BSS_PFC_ACK            pDU_BSSGP_CREATE_BSS_PFC_ACK,
+  PDU_BSSGP_CREATE_BSS_PFC_NACK           pDU_BSSGP_CREATE_BSS_PFC_NACK,
+  PDU_BSSGP_MODIFY_BSS_PFC                pDU_BSSGP_MODIFY_BSS_PFC,
+  PDU_BSSGP_MODIFY_BSS_PFC_ACK            pDU_BSSGP_MODIFY_BSS_PFC_ACK,
+  PDU_BSSGP_DELETE_BSS_PFC                pDU_BSSGP_DELETE_BSS_PFC,
+  PDU_BSSGP_DELETE_BSS_PFC_ACK            pDU_BSSGP_DELETE_BSS_PFC_ACK,
+  PDU_BSSGP_DELETE_BSS_PFC_REQ            pDU_BSSGP_DELETE_BSS_PFC_REQ,
+  PDU_BSSGP_PS_HANDOVER_REQUIRED          pDU_BSSGP_PS_HANDOVER_REQUIRED,
+  PDU_BSSGP_PS_HANDOVER_REQUIRED_ACK      pDU_BSSGP_PS_HANDOVER_REQUIRED_ACK,
+  PDU_BSSGP_PS_HANDOVER_REQUIRED_NACK     pDU_BSSGP_PS_HANDOVER_REQUIRED_NACK,
+  PDU_BSSGP_PS_HANDOVER_REQUEST           pDU_BSSGP_PS_HANDOVER_REQUEST,
+  PDU_BSSGP_PS_HANDOVER_REQUEST_ACK       pDU_BSSGP_PS_HANDOVER_REQUEST_ACK, 
+  PDU_BSSGP_PS_HANDOVER_REQUEST_NACK      pDU_BSSGP_PS_HANDOVER_REQUEST_NACK,
+  PDU_BSSGP_PS_HANDOVER_COMPLETE          pDU_BSSGP_PS_HANDOVER_COMPLETE,
+  PDU_BSSGP_PS_HANDOVER_COMPLETE_ACK      pDU_BSSGP_PS_HANDOVER_COMPLETE_ACK,
+  PDU_BSSGP_PS_HANDOVER_CANCEL            pDU_BSSGP_PS_HANDOVER_CANCEL,
+  PDU_BSSGP_OVERLOAD                      pDU_BSSGP_OVERLOAD,
+  PDU_BSSGP_PERFORM_LOCATION_REQUEST      pDU_BSSGP_PERFORM_LOCATION_REQUEST,
+  PDU_BSSGP_PERFORM_LOCATION_RESPONSE     pDU_BSSGP_PERFORM_LOCATION_RESPONSE,
+  PDU_BSSGP_PERFORM_LOCATION_ABORT        pDU_BSSGP_PERFORM_LOCATION_ABORT,
+  PDU_BSSGP_POSITION_COMMAND              pDU_BSSGP_POSITION_COMMAND,
+  PDU_BSSGP_POSITION_RESPONSE             pDU_BSSGP_POSITION_RESPONSE,
+  PDU_BSSGP_RAN_INFORMATION               pDU_BSSGP_RAN_INFORMATION,
+  PDU_BSSGP_RAN_INFORMATION_REQUEST       pDU_BSSGP_RAN_INFORMATION_REQUEST,
+  PDU_BSSGP_RAN_INFORMATION_ACK           pDU_BSSGP_RAN_INFORMATION_ACK,
+  PDU_BSSGP_RAN_INFORMATION_ERROR         pDU_BSSGP_RAN_INFORMATION_ERROR,
+  PDU_BSSGP_RAN_INFORMATION_APPLICATION_ERROR  
+                                    pDU_BSSGP_RAN_INFORMATION_APPLICATION_ERROR,
+  PDU_BSSGP_MBMS_SESSION_START_REQUEST    pDU_BSSGP_MBMS_SESSION_START_REQUEST,
+  PDU_BSSGP_MBMS_SESSION_START_RESPONSE   pDU_BSSGP_MBMS_SESSION_START_RESPONSE,
+  PDU_BSSGP_MBMS_SESSION_STOP_REQUEST     pDU_BSSGP_MBMS_SESSION_STOP_REQUEST,
+  PDU_BSSGP_MBMS_STOP_RESPONSE            pDU_BSSGP_MBMS_STOP_RESPONSE,
+  PDU_BSSGP_SESSION_UPDATE_REQUEST        pDU_BSSGP_SESSION_UPDATE_REQUEST,
+  PDU_BSSGP_SESSION_UPDATE_RESPONSE       pDU_BSSGP_SESSION_UPDATE_RESPONSE,
+  octetstring                             pDU_BSSGP_unknown
+} with { variant "" };
+
+}  with {encode "RAW"} // end of module
