diff --git a/BSSMAP_v11.2.0_CNL113761.tpd b/BSSMAP_v11.2.0_CNL113761.tpd
new file mode 100644
index 0000000..c9c06f0
--- /dev/null
+++ b/BSSMAP_v11.2.0_CNL113761.tpd
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2017 Ericsson
+
+  All rights reserved. This program and the accompanying materials
+  are made available under the terms of the Eclipse Public License v1.0
+  which accompanies this distribution, and is available at
+  http://www.eclipse.org/legal/epl-v10.html
+
+
+   File:               BSSMAP_v11.2.0_CNL113761.tpd
+   Description:        tpd project file
+   Rev:                R2A
+   Prodnr:             CNL 113 761
+
+ -->
+<TITAN_Project_File_Information version="1.0">
+  <ProjectName>BSSMAP_v11.2.0_CNL113761</ProjectName>
+  <ReferencedProjects>
+    <ReferencedProject name="ProtocolModules_Common" projectLocationURI="../COMMON/ProtocolModules_Common.tpd"/>
+  </ReferencedProjects>
+  <Folders>
+    <FolderResource projectRelativePath="doc" relativeURI="doc"/>
+    <FolderResource projectRelativePath="src" relativeURI="src"/>
+  </Folders>
+  <Files>
+    <FileResource projectRelativePath="doc/BSSMAP_v11.2.0_CNL113761_FS.pdf" relativeURI="/doc/BSSMAP_v11.2.0_CNL113761_FS.pdf"/>
+    <FileResource projectRelativePath="doc/BSSMAP_v11.2.0_CNL113761_PRI.pdf" relativeURI="/doc/BSSMAP_v11.2.0_CNL113761_PRI.pdf"/>
+    <FileResource projectRelativePath="doc/BSSMAP_v11.2.0_CNL113761_UG.pdf" relativeURI="/doc/BSSMAP_v11.2.0_CNL113761_UG.pdf"/>
+    <FileResource projectRelativePath="src/BSSAP_Types.ttcn" relativeURI="/src/BSSAP_Types.ttcn"/>
+  </Files>
+  <ActiveConfiguration>Default</ActiveConfiguration>
+  <Configurations>
+    <Configuration name="Default">
+      <ProjectProperties>
+        <MakefileSettings>
+          <generateInternalMakefile>true</generateInternalMakefile>
+          <GNUMake>true</GNUMake>
+          <incrementalDependencyRefresh>true</incrementalDependencyRefresh>
+          <targetExecutable>bin/BSSMAP_v11.2.0_CNL113761</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/doc/15517-CNL113761_EN_A_PDFV1R5.pdf b/doc/15517-CNL113761_EN_A_PDFV1R5.pdf
new file mode 100644
index 0000000..da2a5e2
--- /dev/null
+++ b/doc/15517-CNL113761_EN_A_PDFV1R5.pdf
Binary files differ
diff --git a/doc/19817-CNL113761_EN_A_PDFV1R5.pdf b/doc/19817-CNL113761_EN_A_PDFV1R5.pdf
new file mode 100644
index 0000000..bd28137
--- /dev/null
+++ b/doc/19817-CNL113761_EN_A_PDFV1R5.pdf
Binary files differ
diff --git a/doc/BSSMAP_v11.2_PRI.pdf b/doc/BSSMAP_v11.2_PRI.pdf
new file mode 100644
index 0000000..d951fe3
--- /dev/null
+++ b/doc/BSSMAP_v11.2_PRI.pdf
Binary files differ
diff --git a/src/BSSAP_Types.ttcn b/src/BSSAP_Types.ttcn
new file mode 100644
index 0000000..cec9a6e
--- /dev/null
+++ b/src/BSSAP_Types.ttcn
@@ -0,0 +1,2983 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2000-2017 Ericsson Telecom AB
+//
+// All rights reserved. This program and the accompanying materials
+// are made available under the terms of the Eclipse Public License v1.0
+// which accompanies this distribution, and is available at
+// http://www.eclipse.org/legal/epl-v10.html
+///////////////////////////////////////////////////////////////////////////////
+//
+//  File:               BSSAP_Types.ttcn
+//  Rev:                R2A
+//  Prodnr:             CNL 113 761
+//  Updated:            2012-10-30
+//  Contact:            http://ttcn.ericsson.se
+
+module  BSSAP_Types {
+
+// This module contains the type definitions and encoding attributes for
+// Base Station System. The signalling protocol reference model is based
+// on 48.008 V11.2.0 Figure 1.
+// 
+//    ------------------------------ 
+//    |  BSSAP                      |
+//    |                             |
+//    |  -------------------------  |   BSSMAP layer is defined in 48.008 v11.2.0
+//    |  |         |             |  |
+//    |  |  DTAP   |   BSSMAP    |  |
+//    |  |         |             |  |
+//    |  -------------------------  |
+//    |  | Distribution Function |  |
+//    |=============================|
+//    |          SCCP               |
+//    ------------------------------ 
+
+
+import from General_Types all;
+
+external function enc_PDU_BSSAP(in PDU_BSSAP pdu) return octetstring
+with { extension "prototype(convert) encode(RAW)" }
+external function dec_PDU_BSSAP(in octetstring stream) return PDU_BSSAP
+with { extension "prototype(convert) decode(RAW)" }
+
+external function enc_PDU_BSSAP_fast(in PDU_BSSAP pdu, out octetstring stream)
+with { extension "prototype(fast) encode(RAW)" }
+external function dec_PDU_BSSAP_backtrack(in octetstring stream, out PDU_BSSAP pdu) return integer
+with { extension "prototype(backtrack) decode(RAW)" }
+
+///////////////////////////////////////////
+//   BSSMAP information element definition
+///////////////////////////////////////////
+
+// Circuit Identity Code - 48.008 subclause 3.2.2.2 
+type record BSSMAP_IE_CircuitIdentityCode
+{
+  OCT1   elementIdentifier, // '01'O
+  OCT1   cicHigh,           // CIC = 11 bits of used  information 
+  OCT1   cicLow             //             (last 5 bits not used)
+} with { variant "PRESENCE (elementIdentifier = '01'O)" }
+
+
+// Connection Release Requested - 48.008 subclause 3.2.2.3
+type record BSSMAP_IE_ConnectionReleaseRequested
+{
+  OCT1   elementIdentifier  // '36'O
+} with { variant "PRESENCE (elementIdentifier = '36'O)" }
+
+
+// Resource Available - 48.008 subclause 3.2.2.4
+type record BSSMAP_IE_ResourceAvailable
+{  
+  OCT1   elementIdentifier, // '03'O
+  OCT4   band1,
+  OCT4   band2,
+  OCT4   band3,
+  OCT4   band4,
+  OCT4   band5 
+} with { variant "PRESENCE (elementIdentifier = '03'O)" }
+
+// Cause - 48.008 subclause 3.2.2.5 
+type record BSSMAP_IE_Cause
+{
+  OCT1   elementIdentifier, // '04'O
+  INT1   lengthIndicator, 
+  BIT7   causeValue,
+  BIT1   extensionCauseValue,
+  OCT1   spare1 optional
+} with { variant "PRESENCE (elementIdentifier = '04'O)"
+  variant (lengthIndicator) 
+  "LENGTHTO (causeValue,extensionCauseValue,spare1)";
+  variant (spare1) "PRESENCE(extensionCauseValue = '1'B)"}
+
+// IMSI - 48.008 subclause 3.2.2.6 
+type record BSSMAP_IE_IMSI
+{
+  OCT1   elementIdentifier, // '08'O
+  INT1   lengthIndicator,  
+  BIT3   typeOfIdentity,
+  BIT1   oddEvenIndicator,  // '0'B even / 1'B odd number of identity digits   
+  HEX5_16  digits           // if nr of digits is even, the last digit: '1111'B
+} with { variant "PRESENCE (elementIdentifier = '08'O)"
+  variant (lengthIndicator) 
+  "LENGTHTO (typeOfIdentity,oddEvenIndicator,digits)";
+  variant "PADDING(yes),PADDING_PATTERN('1'B)"}
+
+
+// TMSI - 48.008 subclause 3.2.2.7 
+type record BSSMAP_IE_TMSI
+{
+  OCT1   elementIdentifier, // '09'O
+  INT1   lengthIndicator,
+  OCT4   tmsiOctets        // octets 3-6 in real
+} with { variant "PRESENCE (elementIdentifier = '09'O)"
+  variant (lengthIndicator) "LENGTHTO (tmsiOctets)"}
+
+
+// Number Of MSs - 48.008 subclause 3.2.2.8 
+type record BSSMAP_IE_NumberOfMSs
+{
+  OCT1   elementIdentifier, // '0E'O
+  OCT1   NrOfHoCandidates
+}
+
+
+// Layer 3 Header Info - 48.008 subclause 3.2.2.9 
+type record BSSMAP_IE_Layer3HeaderInfo
+{
+  OCT1   elementIdentifier, //'07'O
+  INT1   lengthIndicator,   //'02'O
+  BIT4   pd,                // '0110'B
+  BIT4   spare1_4,          // '0000'B
+  BIT4   ti,                // '0000'B
+  BIT4   spare2_4           // '0000'B
+} with { variant "PRESENCE (elementIdentifier = '07'O)"
+  variant (lengthIndicator) "LENGTHTO (pd, spare1_4, ti, spare2_4)" }
+
+
+// Encryption Information - 48.008 subclause 3.2.2.10 
+type record BSSMAP_IE_EncryptionInformation
+{
+  OCT1   elementIdentifier,  // '0A'O
+  INT1   lengthIndicator,    // 1..9
+  OCT1   permittedAlgorithms,//        '1'B  encryption  no 
+  //       '0' B  GSM A5/1 not useable
+  //       '1' B  GSM A5/useable  1 
+  //      '0' B   GSM A5/2 not useable
+  //      '1' B   GSM A5/useable  2 
+  //     '0' B    GSM A5/3 not useable
+  //     '1' B    GSM A5/useable  3 
+  //    '0' B     GSM A5/4 not useable
+  //    '1' B     GSM A5/useable  4 
+  //   '0' B      GSM A5/5 useable  not 
+  //   '1' B      GSM A5/useable  5 
+  //  '0' B       GSM A5/6 useable  not 
+  //  '1' B       GSM A5/useable  6  
+  // '0' B        GSM A5/7 useable  not 
+  // '1' B        GSM A5/useable  7  
+  OCT8   key optional
+} with { variant "PRESENCE (elementIdentifier = '0A'O)"
+  variant (lengthIndicator) "LENGTHTO (permittedAlgorithms, key)" }
+
+
+// Channel Type - 48.008 subclause 3.2.2.11 
+type record BSSMAP_IE_ChannelType
+{
+  OCT1   elementIdentifier,      //'0B'O
+  INT1   lengthIndicator,        // 3..8
+  BIT4   speechOrDataIndicator,  //'0001'B Speech,'0010'B Data '0011'B Sign
+  BIT4   spare1_4,               // '0000'B
+  OCT1   channelRateAndType,     //  
+  octetstring  speechId_DataIndicator
+} with {variant (lengthIndicator) "LENGTHTO (speechOrDataIndicator,
+  spare1_4, channelRateAndType, speechId_DataIndicator)" }
+
+
+// Periodicity - 48.008 subclause 3.2.2.12 
+type record BSSMAP_IE_Periodicity
+{
+  OCT1   elementIdentifier,  //'0C'O
+  OCT1   periodicity
+}
+
+
+// Extended Resource Indicator - 48.008 subclause 3.2.2.13 
+type record BSSMAP_IE_ExtendedResourceInd
+{
+  OCT1   elementIdentifier,  //'0D'O
+  BIT1   TARR,
+  BIT1   SM,
+  BIT6   spare
+} with { variant "PRESENCE (elementIdentifier = '0D'O)" }
+
+
+// Total Resource Accessible - 48.008 subclause 3.2.2.14 
+type record BSSMAP_IE_TotalResourceAccessible
+{
+  OCT1   elementIdentifier,  //'22'O
+  OCT2   nrOfFullRateCh,
+  OCT2   nrOfHalfRateCh
+} with { variant "PRESENCE (elementIdentifier = '22'O)" }
+
+
+// LSA Identifier - 48.008 subclause 3.2.2.15
+type record BSSMAP_IE_LSAIdentifier
+{
+  OCT1   elementIdentifier,  //'3B'O
+  INT1   lengthIndicator,    // 3
+  BSSMAP_FIELD_LSAId lSAID
+} with { variant "PRESENCE (elementIdentifier = '3B'O)"
+  variant (lengthIndicator) "LENGTHTO (lSAID)"}
+
+type record BSSMAP_FIELD_LSAId
+{
+  OCT1   lSAID,
+  OCT1   lSAIDcont1,
+  OCT1   lSAIDcont2
+}
+
+
+// LSA Identifier List - 48.008 subclause 3.2.2.16
+type record BSSMAP_IE_LSAIdentifierList
+{
+  OCT1   elementIdentifier,  //'3C'O
+  INT1   lengthIndicator,    
+  BIT1   EP,
+  BIT7   spare,
+  BSSMAP_FIELD_LSAIdList   lSAIDlist
+} with {variant (lengthIndicator) "LENGTHTO (EP,spare,lSAIDlist)"}
+
+type record of BSSMAP_FIELD_LSAId BSSMAP_FIELD_LSAIdList
+
+
+// Cell Identifier - 48.008 subclause 3.2.2.17 
+type record BSSMAP_IE_CellIdentifier
+{
+  OCT1   elementIdentifier, // '05'O
+  INT1   lengthIndicator,
+  BIT4   cellIdentifierDiscriminator,
+  BIT4   spare1_4,          // '0000'B
+  BSSMAP_FIELD_CellIdentification  cellIdentification
+} with { variant "PRESENCE (elementIdentifier = '05'O)"
+  variant (lengthIndicator)
+  "LENGTHTO(cellIdentifierDiscriminator,spare1_4,cellIdentification)";
+  variant (cellIdentification) "CROSSTAG(
+  cI_CGI,          cellIdentifierDiscriminator='0000'B;  
+  cI_LAC_CI,       cellIdentifierDiscriminator='0001'B;  
+  cI_CI,           cellIdentifierDiscriminator='0010'B;  
+  cI_noCell,       cellIdentifierDiscriminator='0011'B;     
+  cI_PLMN_LAC_RNC, cellIdentifierDiscriminator='1000'B;
+  cI_RNC,          cellIdentifierDiscriminator='1001'B;  
+  cI_LAC_RNC,      cellIdentifierDiscriminator='1010'B;
+  cI_SAI,          cellIdentifierDiscriminator='1011'B;
+  ci_LAC_RNC_CI,   cellIdentifierDiscriminator='1100'B;  
+  )"}
+
+type union  BSSMAP_FIELD_CellIdentification
+{ 
+  BSSMAP_FIELD_CellIdentification_CGI    cI_CGI,     // discriminator = '0000'B
+  BSSMAP_FIELD_CellIdentification_LAC_CI cI_LAC_CI,  // discriminator = '0001'B
+  OCT2                      		 cI_CI,      // discriminator = '0010'B
+  OCT0                      		 cI_noCell,  // discriminator = '0011'B
+  BSSMAP_FIELD_CellIdentification_PLMN_LAC_RNC  cI_PLMN_LAC_RNC,// discriminator = '1000'B
+  OCT2                             	 cI_RNC,     // discriminator = '1001'B
+  BSSMAP_FIELD_CellIdentification_LAC_RNC cI_LAC_RNC,// discriminator = '1010'B
+  BSSMAP_FIELD_CellIdentification_SAI   cI_SAI,      // discriminator = '1011'B
+  BSSMAP_FIELD_LAC_RNC_CI               ci_LAC_RNC_CI       // discriminator = '1100'B
+}
+
+type record  BSSMAP_FIELD_CellIdentification_CGI
+{
+  OCT3   mcc_mnc, 
+  OCT2   lac,
+  OCT2   ci 
+}
+
+type record  BSSMAP_FIELD_CellIdentification_LAC_CI
+{
+  OCT2   lac,
+  OCT2   ci 
+}
+
+type record  BSSMAP_FIELD_CellIdentification_LAI
+{
+  OCT3   mcc_mnc, 
+  OCT2   lac 
+}
+
+type record  BSSMAP_FIELD_CellIdentification_PLMN_LAC_RNC
+{
+  OCT3   mcc_mnc, 
+  OCT2   lac,
+  OCT2   rncId
+} 
+
+type record  BSSMAP_FIELD_CellIdentification_LAC_RNC
+{
+  OCT2   lac,
+  OCT2   rncId 
+}
+
+type record  BSSMAP_FIELD_CellIdentification_SAI
+{
+  OCT3   mcc_mnc, 
+  OCT2   lac,
+  OCT2   sac 
+}
+
+type record  BSSMAP_FIELD_LAC_RNC_CI
+{
+  OCT3   mcc_mnc, 
+  OCT2   lac,
+  OCT2   rncId,   
+  OCT2   ci   
+}
+
+
+// Cell Identifier List - 48.008 subclause 3.2.2.27 
+type record BSSMAP_IE_CellIdentifierList
+{
+  OCT1   elementIdentifier, // '1A'O
+  INT1   lengthIndicator,
+  BIT4   cellIdentifierDiscriminator, 
+  BIT4   spare1_4,          // '0000'B
+  BSSMAP_FIELD_CellIdentificationList  cellIdentificationList 
+} with { variant "PRESENCE (elementIdentifier = '1A'O)"
+  variant (lengthIndicator)
+  "LENGTHTO(cellIdentifierDiscriminator,spare1_4,cellIdentificationList)";
+  variant (cellIdentificationList) "CROSSTAG(
+  cIl_CGI,          cellIdentifierDiscriminator='0000'B;
+  cIl_LAC_CI,       cellIdentifierDiscriminator='0001'B;
+  cIl_CI,           cellIdentifierDiscriminator='0010'B;
+  cIl_noCell,       cellIdentifierDiscriminator='0011'B;
+  cIl_LAI,          cellIdentifierDiscriminator='0100'B;
+  cIl_LAC,          cellIdentifierDiscriminator='0101'B;
+  cIl_allInBSS,     cellIdentifierDiscriminator='0110'B;
+  cIl_PLMN_LAC_RNC, cellIdentifierDiscriminator='1000'B;
+  cIl_RNC,          cellIdentifierDiscriminator='1001'B;
+  cIl_LAC_RNC,      cellIdentifierDiscriminator='1010'B;)"}
+
+type union  BSSMAP_FIELD_CellIdentificationList { 
+  BSSMAP_FIELD_CellIdentificationList_CGI	cIl_CGI,   // discr. = '0000'B
+  BSSMAP_FIELD_CellIdentificationList_LAC_CI	cIl_LAC_CI,// discr. = '0001'B
+  RecordOfOCT2                  		cIl_CI,    // discr. = '0010'B
+  OCT0  					cIl_noCell,// discr. = '0011'B
+  BSSMAP_FIELD_CellIdentificationList_LAI	cIl_LAI,   // discr. = '0100'B only paging
+  RecordOfOCT2                  cIl_LAC,      // discr. = '0101'B only paging
+  OCT0  			cIl_allInBSS, // discr. = '0110'B only paging
+  BSSMAP_FIELD_CellIdentificationList_PLMN_LAC_RNC  cIl_PLMN_LAC_RNC, // discr. = '1000'B
+  RecordOfOCT2                         		cIl_RNC,    // discr. = '1001'B
+  BSSMAP_FIELD_CellIdentificationList_LAC_RNC	cIl_LAC_RNC // discr. = '1010'B
+}
+
+
+type record of OCT2
+RecordOfOCT2
+
+type record of  BSSMAP_FIELD_CellIdentification_CGI 
+BSSMAP_FIELD_CellIdentificationList_CGI
+
+type record of  BSSMAP_FIELD_CellIdentification_LAC_CI
+BSSMAP_FIELD_CellIdentificationList_LAC_CI
+
+type record of  BSSMAP_FIELD_CellIdentification_LAI
+BSSMAP_FIELD_CellIdentificationList_LAI
+
+type record of  BSSMAP_FIELD_CellIdentification_PLMN_LAC_RNC
+BSSMAP_FIELD_CellIdentificationList_PLMN_LAC_RNC
+
+type record of  BSSMAP_FIELD_CellIdentification_LAC_RNC 
+BSSMAP_FIELD_CellIdentificationList_LAC_RNC
+
+type record of  BSSMAP_FIELD_CellIdentification_SAI 
+BSSMAP_FIELD_CellIdentificationList_SAI
+
+// 3.2.2.27a    Cell Identifier List Segment
+type record BSSMAP_IE_CellIdentifierListSegment
+{
+  OCT1   elementIdentifier, // '6D'O
+  INT1   lengthIndicator,
+  BIT4   sequenceNumber, 
+  BIT4   sequenceLength,
+  BIT4   cellIdentifierDiscriminator, 
+  BIT4   spare,
+  BSSMAP_FIELD_CellIdentificationListSegment  cellIdentificationListSegment 
+} with { variant "PRESENCE (elementIdentifier = '6D'O)"
+  variant (lengthIndicator)
+  "LENGTHTO(sequenceNumber, sequenceLength, cellIdentifierDiscriminator, spare, cellIdentificationListSegment)";
+  variant (cellIdentificationListSegment) "CROSSTAG(
+  cIl_CGI,          cellIdentifierDiscriminator='0000'B;  
+  cIl_LAC_CI,       cellIdentifierDiscriminator='0001'B;  
+  cIl_CI,           cellIdentifierDiscriminator='0010'B;     
+  cIl_noCell,       cellIdentifierDiscriminator='0011'B;    
+  cIl_LAI,          cellIdentifierDiscriminator='0100'B;    
+  cIl_LAC,          cellIdentifierDiscriminator='0101'B;    
+  cIl_allInBSS,     cellIdentifierDiscriminator='0110'B;
+  cIl_MCC_MNC,      cellIdentifierDiscriminator='0111'B;)"}
+
+
+
+type union  BSSMAP_FIELD_CellIdentificationListSegment
+{
+  BSSMAP_FIELD_CellIdentificationList_CGI                cIl_CGI,      // discr. ='0000'B;
+  BSSMAP_FIELD_CellIdentificationList_LAC_CI_Segment	 cIl_LAC_CI,   // discr. ='0001'B
+  BSSMAP_FIELD_CellIdentificationList_CIL_CI_Segment     cIl_CI,       // discr. ='0010'B; 
+  OCT0                                                   cIl_noCell,   // discr. ='0011'B;    
+  BSSMAP_FIELD_CellIdentificationList_LAI                cIl_LAI,      // discr. ='0100'B;
+  RecordOfOCT2                                           cIl_LAC,      // discr. ='0101'B;
+  OCT0                                                   cIl_allInBSS, // discr. ='0101'B;
+  RecordOfOCT3                                           cIl_MCC_MNC   // discr. ='0111'B;  
+}
+
+type record BSSMAP_FIELD_CellIdentificationList_LAC_CI_Segment
+{
+  OCT3                                                 mcc_mnc, 
+  BSSMAP_FIELD_CellIdentificationList_LAC_CI           lac_ci
+}
+
+type record BSSMAP_FIELD_CellIdentificationList_CIL_CI_Segment
+{
+  OCT3                                                 mcc_mnc, 
+  OCT2                                                 lac,
+  RecordOfOCT2                                         ci
+}
+
+type record of OCT3
+RecordOfOCT3
+
+
+// 3.2.2.27b    Cell Identifier List Segment for Established Cells
+type record BSSMAP_IE_CellIdentifierListSegmentEstCells
+{
+  OCT1   elementIdentifier, // '71'O
+  INT1   lengthIndicator,
+  BIT4   cellIdentifierDiscriminator, 
+  BIT4   spare1_4,          // '0000'B
+  BSSMAP_FIELD_CellIdentificationListEstablishment  cellIdentificationListEstCells 
+} with { variant "PRESENCE (elementIdentifier = '71'O)"
+  variant (lengthIndicator)
+  "LENGTHTO(cellIdentifierDiscriminator,spare1_4,cellIdentificationListEstCells)";
+  variant (cellIdentificationListEstCells) "CROSSTAG(
+  cIl_CGI,          cellIdentifierDiscriminator='0000'B;
+  cIl_LAC_CI,       cellIdentifierDiscriminator='0001'B;
+  cIl_CI,           cellIdentifierDiscriminator='0010'B; 
+  cIl_LAI,          cellIdentifierDiscriminator='0100'B; 
+  cIl_LAC,          cellIdentifierDiscriminator='0101'B; 
+  cIl_allInBSS,     cellIdentifierDiscriminator='0110'B;
+  cIl_MCC_MNC,      cellIdentifierDiscriminator='0111'B;)"}  
+  
+  
+type union  BSSMAP_FIELD_CellIdentificationListEstablishment
+{ 
+ BSSMAP_FIELD_CellIdentificationList_CGI             cIl_CGI,      // discr. = '0000'B
+ BSSMAP_FIELD_CellIdentificationList_LAC_CI_Segment  cIl_LAC_CI,   // discr. = '0001'B;
+ BSSMAP_FIELD_CellIdentificationList_CIL_CI_Segment  cIl_CI,       // discr. = '0010'B;
+ BSSMAP_FIELD_CellIdentificationList_LAI             cIl_LAI,      // discr. = '0100'B;  
+ RecordOfOCT2                                        cIl_LAC,      // discr. = '0101'B;  
+ OCT0                                                cIl_allInBSS, // discr. = '0110'B;
+ RecordOfOCT3                                        cIl_MCC_MNC   // discr. = '0111'B;
+ }
+ 
+// 3.2.2.27c 
+type record BSSMAP_IE_CellIdentifierListSegmentCellsToEst
+{
+  OCT1   elementIdentifier, // '73'O
+  INT1   lengthIndicator,
+  BIT4   cellIdentifierDiscriminator, 
+  BIT4   spare1_4,          // '0000'B
+  BSSMAP_FIELD_CellIdentificationListEstablishment  cellIdentificationListCellsToEst 
+} with { variant "PRESENCE (elementIdentifier = '72'O)"
+  variant (lengthIndicator)
+  "LENGTHTO(cellIdentifierDiscriminator,spare1_4,cellIdentificationListCellsToEst)";
+  variant (cellIdentificationListCellsToEst) "CROSSTAG(
+  cIl_CGI,          cellIdentifierDiscriminator='0000'B;
+  cIl_LAC_CI,       cellIdentifierDiscriminator='0001'B;
+  cIl_CI,           cellIdentifierDiscriminator='0010'B; 
+  cIl_LAI,          cellIdentifierDiscriminator='0100'B; 
+  cIl_LAC,          cellIdentifierDiscriminator='0101'B; 
+  cIl_allInBSS,     cellIdentifierDiscriminator='0110'B;
+  cIl_MCC_MNC,      cellIdentifierDiscriminator='0111'B;)"}   
+ 
+// 3.2.2.27e 
+type record BSSMAP_IE_CellIdentifierListSegmentReleasedCellsNoUserPresent
+{
+  OCT1   elementIdentifier, // '74'O
+  INT1   lengthIndicator,
+  BIT4   cellIdentifierDiscriminator, 
+  BIT4   spare1_4,          // '0000'B
+  BSSMAP_FIELD_CellIdentificationListEstablishment  cellIdentificationListReleasedCellsNoUserPresent 
+} with { variant "PRESENCE (elementIdentifier = '74'O)"
+  variant (lengthIndicator)
+  "LENGTHTO(cellIdentifierDiscriminator,spare1_4,cellIdentificationListReleasedCellsNoUserPresent)";
+  variant (cellIdentificationListReleasedCellsNoUserPresent) "CROSSTAG(
+  cIl_CGI,          cellIdentifierDiscriminator='0000'B;
+  cIl_LAC_CI,       cellIdentifierDiscriminator='0001'B;
+  cIl_CI,           cellIdentifierDiscriminator='0010'B; 
+  cIl_LAI,          cellIdentifierDiscriminator='0100'B; 
+  cIl_LAC,          cellIdentifierDiscriminator='0101'B; 
+  cIl_allInBSS,     cellIdentifierDiscriminator='0110'B;
+  cIl_MCC_MNC,      cellIdentifierDiscriminator='0111'B;)"}   
+ 
+ // 3.2.2.27f 
+type record BSSMAP_IE_CellIdentifierListSegmentNotEstablishedCellsNoEstPossible
+{
+  OCT1   elementIdentifier, // '73'O
+  INT1   lengthIndicator,
+  BIT4   cellIdentifierDiscriminator, 
+  BIT4   spare1_4,          // '0000'B
+  BSSMAP_FIELD_CellIdentificationListEstablishment  cellIdentificationListNotEstablishedCellsNoEstPossible 
+} with { variant "PRESENCE (elementIdentifier = '73'O)"
+  variant (lengthIndicator)
+  "LENGTHTO(cellIdentifierDiscriminator,spare1_4,cellIdentificationListNotEstablishedCellsNoEstPossible)";
+  variant (cellIdentificationListNotEstablishedCellsNoEstPossible) "CROSSTAG(
+  cIl_CGI,          cellIdentifierDiscriminator='0000'B;
+  cIl_LAC_CI,       cellIdentifierDiscriminator='0001'B;
+  cIl_CI,           cellIdentifierDiscriminator='0010'B; 
+  cIl_LAI,          cellIdentifierDiscriminator='0100'B; 
+  cIl_LAC,          cellIdentifierDiscriminator='0101'B; 
+  cIl_allInBSS,     cellIdentifierDiscriminator='0110'B;
+  cIl_MCC_MNC,      cellIdentifierDiscriminator='0111'B;)"}   
+ 
+  
+// Priority - 48.008 subclause 3.2.2.18 
+type record BSSMAP_IE_Priority
+{
+  OCT1   elementIdentifier, //'06'O
+  INT1   lengthIndicator,   //'01'O
+  BIT1   pvi,  // '0'B connection canNOT be preempted by other allocation
+  // '1'B connection might  be preempted by other allocation
+  BIT1   qa,   // '0'B queuing not allowed - '1'B queuing allowed
+  BIT4   priorityLevel, // '0000'B spare 
+  // '0001'B priority 1  level  (highest) 
+  // '1110'B priority 14  level  (lowest) 
+  // '1111'B priority used  not 
+  BIT1   pci,           // '0'B  allocation canNOT preempt connection  other 
+  // '1'B  allocation might preempt other connection 
+  BIT1   spare1_1       // '0'B
+} with { variant "PRESENCE (elementIdentifier = '06'O)"
+  variant(lengthIndicator) "LENGTHTO(pvi,qa,priorityLevel,pci,spare1_1)" }
+
+
+// Classmark Information Type 2 - 48.008 subclause 3.2.2.19 
+type record BSSMAP_IE_ClassmarkInformationType2
+{
+  OCT1   elementIdentifier,  //'12'O
+  INT1   lengthIndicator,    // '02'O or '03'O
+  BIT3   rf_PowerCapability, // '000'B class1 (for GSM+DCS+PCS)
+  // '001'B class2 (for GSM+DCS+PCS)
+  //  '010'B class3 (for GSM+DCS+PCS)
+  //  '011'class4  B  (only for GSM) 
+  //  '100'class5  B  (only for GSM) 
+  BIT1   a5_1, //encryption algorithm A5/1 available ('1'B) or not ('0'B)
+  BIT1   esind,//controlled early classmark sending implemented ('1'B) or not ('0'B)
+  BIT2   revisionLevel,      //  '00'B reserved for phase1 (GSM+DCS)
+  //  '00'B reserved  (PCS) 
+  //  '01'B used by phase2 MSs  (GSM+DCS)
+  //  '01'B used by PCS1900 MSs  phase1  (PCS) 
+  BIT1   spare1_1,     //  '0'B
+  BIT1   fc,           //  MS' support of E/R_GSM ('1'B) or not ('0'B)
+  BIT1   vgcs, // VGCS capability or notification wanted ('1'B) or not ('0'B)
+  BIT1   vbs,  // VBS capability or notification wanted ('1'B) or not ('0'B)
+  BIT1   sm_Capability, // SM capbility present ('1'B) or not ('0'B) 
+  BIT2   ss_ScreenIndicator, //  '00'B default value of phase1 (GSM+DCS)
+  //  '00'reserved  B  (PCS) 
+  //  '01'B capability of notation  ellipsis 
+  //  '10'B for future use
+  //  '11'B for use  future 
+  BIT1   ps_Capability,      // ignored, if received
+  BIT1   spare2_1,           // '0'B
+  BSSMAP_FIELD_ClassmarkInformationType2_oct5  classmarkInformationType2_oct5
+} with { variant "PRESENCE (elementIdentifier = '12'O)";
+  variant (lengthIndicator) "LENGTHTO (rf_PowerCapability, a5_1,
+  esind, revisionLevel, spare1_1, fc, vgcs, vbs, sm_Capability,
+  ss_ScreenIndicator, ps_Capability, spare2_1, 
+  classmarkInformationType2_oct5)" }
+
+// Helper type for BSSMAP Applib
+type record BSSMAP_IE_ClassmarkInformationType2_V
+{
+  BIT3   rf_PowerCapability, // '000'B class1 (for GSM+DCS+PCS)
+  // '001'B class2 (for GSM+DCS+PCS)
+  //  '010'B class3 (for GSM+DCS+PCS)
+  //  '011'class4  B  (only for GSM) 
+  //  '100'class5  B  (only for GSM) 
+  BIT1   a5_1, //encryption algorithm A5/1 available ('1'B) or not ('0'B)
+  BIT1   esind,//controlled early classmark sending implemented ('1'B) or not ('0'B)
+  BIT2   revisionLevel,      //  '00'B reserved for phase1 (GSM+DCS)
+  //  '00'B reserved  (PCS) 
+  //  '01'B used by phase2 MSs  (GSM+DCS)
+  //  '01'B used by PCS1900 MSs  phase1  (PCS) 
+  BIT1   spare1_1,     //  '0'B
+  BIT1   fc,           //  MS' support of E/R_GSM ('1'B) or not ('0'B)
+  BIT1   vgcs, // VGCS capability or notification wanted ('1'B) or not ('0'B)
+  BIT1   vbs,  // VBS capability or notification wanted ('1'B) or not ('0'B)
+  BIT1   sm_Capability, // SM capbility present ('1'B) or not ('0'B) 
+  BIT2   ss_ScreenIndicator, //  '00'B default value of phase1 (GSM+DCS)
+  //  '00'reserved  B  (PCS) 
+  //  '01'B capability of notation  ellipsis 
+  //  '10'B for future use
+  //  '11'B for use  future 
+  BIT1   ps_Capability,      // ignored, if received
+  BIT1   spare2_1,           // '0'B
+  BSSMAP_FIELD_ClassmarkInformationType2_oct5  classmarkInformationType2_oct5
+}
+
+type record BSSMAP_FIELD_ClassmarkInformationType2_oct5
+{
+  BIT1   a5_2,//encryption algorithm A5/2 available ('0'B) or not ('1'B) 
+  BIT1   a5_3,//encryption algorithm A5/3 available ('0'B) or not ('1'B) 
+  BIT1   cmsp,//"Network initiated MO CM connectionrequest" not supported ('0'B)
+  //or supported for at least one CM protocol ('1'B)
+  BIT1   solsa,// The ME support SoLSA ('1'B) or not ('0'B)
+  BIT1   ucs2, // '0'B ME has a preference for the default alphabet over UCS2
+  // '1'B ME has no preference between the use of the default
+  //   alphabet and the use of UCS2
+  BIT1   lcsvacap, // LCS value added location request notification capability
+  // supported ('1'B) or not ('0'B)
+  BIT1   spare,// '0'B
+  BIT1   cm3   // '0'B Any additional capability info ('1'B) or not ('0'B)
+}
+
+
+// Classmark Information Type 3 - 48.008 subclause 3.2.2.20
+type record BSSMAP_IE_ClassmarkInformationType3
+{
+  OCT1   elementIdentifier, //'13'O
+  INT1   lengthIndicator,  // '01'O .. '0C'O
+  OCT1_32  classmark3ValuePart
+} with { variant "PRESENCE (elementIdentifier = '13'O)"
+  variant (lengthIndicator) "LENGTHTO (classmark3ValuePart)"}
+
+
+// Interference Band To Be Used - 48.008 subclause 3.2.2.21
+type record BSSMAP_IE_InterferenceBandToBeUsed
+{
+  OCT1   elementIdentifier, // '14'O
+  BIT5   band,
+  BIT3   spare
+} with { variant "PRESENCE (elementIdentifier = '14'O)" }
+
+
+// RR Cause - 48.008 subclause 3.2.2.22 
+type record BSSMAP_IE_RR_Cause
+{
+  OCT1   elementIdentifier, // '15'O
+  OCT1   rr_Cause
+} with { variant "PRESENCE (elementIdentifier = '15'O)" }
+
+
+// LSA Information - 48.008 subclause 3.2.2.23 
+type record BSSMAP_IE_LSAInformation
+{
+  OCT1   elementIdentifier, //'3D'O
+  INT1   lengthIndicator,
+  BIT1   lSAonly,
+  BIT7   spare,  
+  BSSMAP_FIELD_LSAIdAttrib_List  lSAIdAttrib_List 
+} with { variant "PRESENCE (elementIdentifier = '3D'O)"
+  variant (lengthIndicator) "LENGTHTO (lSAonly,spare,lSAIdAttrib_List)" }
+    
+type record BSSMAP_FIELD_LSAIdAttrib  
+{
+ BIT4           priority,
+ BIT1           pref,
+ BIT1           act,
+ BIT2           spare
+}  
+ 
+type record of BSSMAP_FIELD_LSAIdAttrib BSSMAP_FIELD_LSAIdAttrib_List  
+
+
+// Layer 3 Information - 48.008 subclause 3.2.2.24
+type record BSSMAP_IE_Layer3Information
+{
+  OCT1   elementIdentifier, // '17'O
+  INT1   lengthIndicator,
+  octetstring layer3info
+} with { variant "PRESENCE (elementIdentifier = '17'O)"
+  variant (lengthIndicator) "LENGTHTO (layer3info)"}
+
+// DLCI - 48.008 subclause 3.2.2.25    (48006 v8.0.0 section 9.3.2)
+type record BSSMAP_IE_DLCI
+{
+  OCT1   elementIdentifier, // '18'O
+  BIT3   sapiValue, // '011'O Short Message Signalling  Service 
+  BIT3   spare,
+  BIT1   c1,
+  BIT1   c2 
+}
+
+
+// Downlink DTX Flag - 48.008 subclause 3.2.2.26 
+type record BSSMAP_IE_DownLinkDTXFlag
+{
+  OCT1   elementIdentifier, // '19'O
+  BIT1   dtx,     // DTX is disabled ('0'B) or enabled ('1'B) to downlink 
+  BIT7   spare1_7 // '0000000'B
+} with { variant "PRESENCE (elementIdentifier = '19'O)" }
+
+
+// Cell Identifier List - 48.008 subclause 3.2.2.27 
+// See above under Cell Identifier
+
+
+// Response Request - 48.008 subclause 3.2.2.28 
+type record BSSMAP_IE_ResponseRequest
+{
+  OCT1   elementIdentifier // '1B'O
+}  with { variant "PRESENCE (elementIdentifier = '1B'O)" }
+
+
+//  Resource Indication Method - 48.008 subclause 3.2.2.29
+type record BSSMAP_IE_ResourceIndMethod
+{
+  OCT1   elementIdentifier, // '1C'O
+  BIT4   resourceIndMethod,
+  BIT4   spare
+}
+
+
+// Classmark Information Type 1 - 48.008 subclause 3.2.2.30 
+type record BSSMAP_IE_ClassmarkInformationType1
+{
+  OCT1   elementIdentifier,  // '1D'O
+  BIT3   rf_PowerCapability, // '000'B class1 (for GSM+DCS+PCS)
+                             // '001'B class2 (for GSM+DCS+PCS)
+                             // '010'B class3 (for GSM+DCS+PCS)
+                             // '011'class4  B  (only for GSM) 
+                             // '100'class5  B  (only for GSM) 
+  BIT1   a5_1,               //encryption algorithm A5/1 available ('1'B) or not ('0'B)
+  BIT1   esind,              //controlled early classmark sending implemented (1) or not (0)
+  BIT2   revisionLevel,
+  BIT1   spare1_1   // '0'B
+} with { variant "PRESENCE(elementIdentifier = '1D'O)" }
+
+// Circuit Identity Code List - 48.008 subclause 3.2.2.31 
+type record BSSMAP_IE_CircuitIdentityCodeList
+{
+  OCT1   elementIdentifier, // '1E'O
+  INT1   lengthIndicator,
+  OCT1   range,   // A number in binary representation ranging from 2 to 255
+  OCTN   status   // status data of lengthIndicator 1_32    
+} with { variant "PRESENCE(elementIdentifier = '1E'O)"
+  variant (lengthIndicator) "LENGTHTO (range, status)" } ;
+
+
+// Diagnostics - 48.008 subclause 3.2.2.32 
+type record BSSMAP_IE_Diagnostics
+{
+  OCT1   elementIdentifier, // '1F'O
+  INT1   lengthIndicator,
+  OCT1   errorLocation,     // First octet of Error pointer
+  BIT4   bitPointer,
+  BIT4   spare,
+  OCTN   messageReceived   // The errorneous message   
+} with {variant (lengthIndicator) 
+  "LENGTHTO (errorLocation, bitPointer, spare, messageReceived)" } ;
+
+
+// Chosen Channel - 48.008 subclause 3.2.2.33 
+type record BSSMAP_IE_ChosenChannel
+{
+  OCT1   elementIdentifier,  // '21'O
+  BIT4   channel, 
+  BIT4   channelMode  
+} with { variant "PRESENCE (elementIdentifier = '21'O)" }
+
+
+// Cipher Response Mode - 48.008 subclause 3.2.2.34 
+type record BSSMAP_IE_CipherResponseMode
+{
+  OCT1   elementIdentifier,     // '23'O
+  BIT1   cipherResponseModeInfo,//IMEISV must be included by MS ('0') or not (1)
+  BIT7   spare1_7               // '0000000'B       
+} with { variant "PRESENCE (elementIdentifier = '23'O)" }
+
+
+// Layer 3 Message contents - 48.008 subclause 3.2.2.35
+type record BSSMAP_IE_Layer3MessageContents
+{
+  OCT1   elementIdentifier, // '20'O
+  INT1   lengthIndicator,
+  octetstring layer3MsgConents
+} with { variant "PRESENCE (elementIdentifier = '20'O)"
+  variant (lengthIndicator) "LENGTHTO (layer3MsgConents)"}
+
+
+// Channel Needed - 48.008 subclause 3.2.2.36 
+type record BSSMAP_IE_ChannelNeeded
+{
+  OCT1   elementIdentifier,     // '24'O
+  BIT2   channel, //00:any, 01:SDCCH, 10:Full TCH, 11:Dual TCH
+  BIT6   spare     
+} with { variant "PRESENCE (elementIdentifier = '24'O)" }
+
+
+// Trace Type - 48.008 subclause 3.2.2.37 
+type record BSSMAP_IE_TraceType
+{
+  OCT1   elementIdentifier, // '25'O
+  BIT2   e,//  Event  Invoking  
+  //  '00'B:  Mobile Originated Call, Mobile Call  Terminated,
+  //          Short Message Service Mobile Originated, Short
+  //          Message Service Mobile Terminated, Independent  Call 
+  //          Supplementary Services, Updates  Location,
+  //          IMSI attach, detach  IMSI 
+  //  '01'B:   Mobile Originated Call, Mobile Call  Terminated,
+  //           Short Message Service Mobile Originated, Short
+  //           Message Service Mobile Terminated, Independent  Call 
+  //           Supplementary Services only
+  //  '10'B:   Location Updates, IMSI attach, IMSI only  detach       
+  //  '11'B:   Operator definable 
+  BIT2   d,//  MSC Type  Record  
+  //  '00'B:   Basic 
+  //  '01'B:   Detailed (Optional)   
+  //  '00'B:   Spare 
+  //  '00'B:   No Trace  MSC 
+  BIT2   c,//  BSS Type  Record 
+  //  '00'B:   Basic 
+  //  '01'B:   Handover
+  //  '00'B:   Radio
+  //  '00'B:   No Trace  BSS   
+  BIT1   b,//  For expansion  future 
+  //  Set to '0'B
+  BIT1   a //  Priority Indication
+  //  '0'B:   Priority  No  
+  //  '1'B:   Priority
+}
+
+
+// Trigger ID - 48.008 subclause 3.2.2.38 
+type record BSSMAP_IE_TriggerId
+{
+  OCT1   elementIdentifier, //'26'O
+  INT1   lengthIndicator,
+  octetstring entityIdentity length(1..20)
+} with { variant "PRESENCE (elementIdentifier = '26'O)"
+  variant (lengthIndicator) "LENGTHTO (entityIdentity)" }
+
+
+// Trace Reference - 48.008 subclause 3.2.2.39
+type record BSSMAP_IE_TraceReference
+{
+  OCT1  elementIdentifier, // '27'O
+  OCT1  msb_TraceReference, // the most significant bit of trace reference  
+  OCT1  lsb_TraceReference  // the least significant bit of trace reference 
+} with { variant "PRESENCE (elementIdentifier = '27'O)" }
+
+
+// Transaction ID - 48.008 subclause 3.2.2.40 
+type record BSSMAP_IE_TransactionId
+{
+  OCT1   elementIdentifier, //'28'O
+  INT1   lengthIndicator,
+  octetstring transactionNumber length(1..2)
+} with { variant "PRESENCE (elementIdentifier = '28'O)"
+  variant (lengthIndicator) "LENGTHTO (transactionNumber)" }
+
+
+// Mobil Identity - 48.008 subclause 3.2.2.41 
+type record BSSMAP_IE_MobileIdentity 
+{
+  OCT1   elementIdentifier, // '29'O
+  INT1   lengthIndicator,  
+  BIT3   typeOfIdentity,
+  BIT1   oddEvenIndicator,  // '0'B even / 1'B odd number of identity digits   
+  HEX5_16  digits           // if nr of digits is even, the last digit: '1111'B
+} with { variant "PRESENCE (elementIdentifier = '29'O)"
+  variant (lengthIndicator) 
+  "LENGTHTO (typeOfIdentity,oddEvenIndicator,digits)";
+  variant "PADDING(yes),PADDING_PATTERN('1'B)"}
+
+
+// OMCID - 48.008 subclause 3.2.2.42 
+type record BSSMAP_IE_OMCId
+{
+  OCT1   elementIdentifier,  // '2A'O
+  INT1   lengthIndicator,  
+  BIT4   numberingPlanind,  // '0000'B unknown 
+  // '0001'B  ISDN/Telephony Numbering Plan (Rec CCITT E.164) 
+  // '0011'B  data numbering plan  (CCITT Rec X.121) 
+  // '0100'B  telex numbering plan  (CCITT Rec F.69) 
+  // '0110'B  land mobile numbering plan  (CCITT Rec E.212) 
+  // '1000'B  national numbering plan 
+  // '1001'B  private numbering plan
+  //  All other values are reserved 
+  BIT3   natureOfAddress, // '000'B  unknown 
+  // '001'B  international number
+  // '010'B  national significant number  
+  // '011'B  network specific number
+  // '100'B  subscriber number  
+  // '110'B  abbreviated number
+  //  All other values are reserved 
+  BIT1   ext,  
+  OCTN   digits// The digits are encoded  TBCD  (digit 0000 _ 1001 (0_9),
+  // 1010 = '*', 1011 = '#', 1100 = 'A', 1101 = 'B', 1110 = 'C').
+  // If the number of identity digits is odd bits then bit 5-8
+  // of the last octet is filled with '1111'
+} with { variant "PRESENCE (elementIdentifier = '2A'O)"
+  variant (lengthIndicator) "LENGTHTO (numberingPlanind, natureOfAddress,
+  ext, digits)"}
+
+
+// Forward Indicator - 48.008 subclause 3.2.2.43 
+type record BSSMAP_IE_ForwardIndicator
+{
+  OCT1   elementIdentifier, //'2B'O
+  BIT4   forwardIndicator,
+  BIT4   spare
+} with { variant "PRESENCE (elementIdentifier = '2B'O)" }
+
+
+// Choosen Encryption Algorithm - 48.008 subclause 3.2.2.44 
+type record BSSMAP_IE_ChosenEncryptionAlgorithm
+{
+  OCT1   elementIdentifier,  // '2C'O
+  OCT1   algorithmIdentifier // '00000001'B no encryption
+  // '00000010'B A5/1
+  // '00000011'B A5/2
+  // '00000100'B A5/3
+  // '00000101'B A5/4
+  // '00000110'B A5/5
+  // '00000111'B A5/6
+  // '00001000'B A5/7 
+} with { variant "PRESENCE (elementIdentifier = '2C'O)" }
+
+
+// Circuit Pool - 48.008 subclause 3.2.2.45 
+type record BSSMAP_IE_CircuitPool
+{
+  OCT1   elementIdentifier, // '2D'O
+  OCT1   circuitPoolNumber
+} with { variant "PRESENCE (elementIdentifier = '2D'O)" }
+
+
+// Circuit Pool List - 48.008 subclause 3.2.2.46 
+type record BSSMAP_IE_CircuitPoolList
+{
+  OCT1   elementIdentifier, // '2E'O
+  INT1   lengthIndicator,
+  octetstring  circuitPoolNumber
+} with { variant "PRESENCE (elementIdentifier = '2E'O)"
+  variant (lengthIndicator) "LENGTHTO (circuitPoolNumber)" } ;
+
+
+// Time Indication - 48.008 subclause 3.2.2.47
+type record BSSMAP_IE_TimeIndication
+{
+  OCT1   elementIdentifier, // '2F'O
+  OCT1   time
+}
+
+
+// Resource Situation - 48.008 subclause 3.2.2.48
+type record BSSMAP_IE_ResourceSituation
+{
+  OCT1   elementIdentifier, // '30'O
+  INT1   lengthIndicator,
+  BSSMAP_FIELD_ResourceList   resourceList
+} with {variant "PRESENCE (elementIdentifier = '30'O)"
+  variant (lengthIndicator) "LENGTHTO (resourceList)" }
+
+type record of BSSMAP_FIELD_Resource 
+BSSMAP_FIELD_ResourceList
+
+type record BSSMAP_FIELD_Resource
+{
+  BIT4   channelType,
+  BIT4   resourceAndBandInd,
+  OCT1   nrOfChannels,
+  OCT1   nrOfChannels7_15 optional
+} with {variant (nrOfChannels) "EXTENSION_BIT(reverse)"}
+
+
+// Current Channel Type 1 - 48.008 subclause 3.2.2.49 
+type record BSSMAP_IE_CurrentChannelType1
+{
+  OCT1   elementIdentifier, // '31'O
+  BIT4   channel,
+  BIT4   channelMode
+} with { variant "PRESENCE (elementIdentifier = '31'O)" }
+
+// Queueing Indicator - 48.008 subclause 3.2.2.50
+type record BSSMAP_IE_QueueingIndicator
+{
+  OCT1   elementIdentifier, //'32'O
+  BIT1   spare1, // '0'B
+  BIT1   qri,    // It is recommended to allow queueing ('1'B) or not ('0'B)
+  BIT6   spare2  // '000000'B
+} with { variant "PRESENCE (elementIdentifier = '32'O)" }
+
+// Speech Version - 48.008 subclause 3.2.2.51 
+type record BSSMAP_IE_SpeechVersion
+{
+  OCT1   elementIdentifier, // '40'O
+  BIT7   speechVersionIdentifier,//'0000001'B speech full rate version 1 (H'01)
+  //'0010001'B speech full rate version 2 (H'11)
+  //'0100001'B speech full rate version 3 (H'21)
+  //'0000101'B speech half rate version 1 (H'05)
+  //'0010101'B speech half rate version 2 (H'15)
+  //'0100101'B speech half rate version 3 (H'25)
+  BIT1   spare1_1                // '0'B
+} with { variant "PRESENCE (elementIdentifier = '40'O)" }
+
+
+// Assignment Requirement - 48.008 subclause 3.2.2.52 
+type record BSSMAP_IE_AssignmentRequirement
+{
+  OCT1   elementIdentifier, // '33'O
+  OCT1   assignmentRequirement
+} with { variant "PRESENCE (elementIdentifier = '33'O)" }
+
+
+// Talker Flag - 48.008 subclause 3.2.2.54
+type record BSSMAP_IE_TalkerFlag
+{
+  OCT1   elementIdentifier  // '35'O
+} with { variant "PRESENCE (elementIdentifier = '35'O)" }
+
+
+// Group Call Reference - 48.008 subclause 3.2.2.55 
+type record BSSMAP_IE_GroupCallReference
+{
+  OCT1   elementIdentifier, // '37'O
+  INT1   lengthIndicator,   // 1..6
+  octetstring  descrGroupbroadcastCallRef  length(1..5)  // never sent by MSC, ignored if received
+} with { variant "PRESENCE (elementIdentifier = '37'O)"
+  variant (lengthIndicator) "LENGTHTO (descrGroupbroadcastCallRef)" }
+
+
+// EMLPP Priority - 48.008 subclause 3.2.2.56
+type record BSSMAP_IE_EMLPP_Priority
+{
+  OCT1   elementIdentifier,// '38'O
+  BIT3   callPriority,     // '000'B  no  priority applied 
+  // '001'B call priority level 4
+  // '010'B call priority 3  level 
+  // '011'B call priority level 2
+  // '100'B call priority 1  level 
+  // '101'B call priority level 0
+  // '110'B call priority B  level 
+  // '111'B call priority level A
+  BIT5   spare1_5   // '00000'B
+} with { variant "PRESENCE (elementIdentifier = '38'O)" }
+
+
+// Configuration Evolution Indicator -  48.008 subclause 3.2.2.57
+type record BSSMAP_IE_ConfigurationEvolutionIndication
+{
+  OCT1   elementIdentifier,// H'39
+  BIT4   smi,              // '0000'B no modification is allowed
+  // '0001'B modification allowed <= 1 TCH/F
+  // '0010'B modification allowed <= 2 TCH/F
+  // '0011'B modification allowed <= 3 TCH/F
+  // '0100'B modification allowed <= 4 TCH/F
+  BIT4   spare1_4   // '0000'B
+} with { variant "PRESENCE (elementIdentifier = '39'O)" }
+
+
+// Old BSS to New BSS Information - 48.008 subclause 3.2.2.58
+type record BSSMAP_IE_OldToNewBSSInfo
+{
+  OCT1   elementIdentifier, //'3A'O
+  INT1   lengthIndicator,
+  octetstring oldToNewBSSIEs
+} with { variant "PRESENCE (elementIdentifier = '3A'O)"
+  variant (lengthIndicator) "LENGTHTO (oldToNewBSSIEs)" }
+
+
+// LCS QOS - 48.008 subclause 3.2.2.60 (and 49.031 10.16)
+type record BSSMAP_IE_LCSQOS {
+  OCT1   elementIdentifier, // '3E'O
+  INT1   lengthIndicator,
+  BIT1   vCI, //Vertical Coordinate Indicator: VC requested ('1'B) or not ('0'B)
+  BIT1   vEL, // report velocity if available (1) or not(0)
+  BIT6   spare_1_6, // '0000000'B
+  BIT7   horizontalAccuracy, // Accuracy  Horizontal  (HA) 
+  BIT1   hAI, // Horizontal Accuracy Indicator HA is specified (1) or not (0)
+  BIT7   verticalAccuracy,   // Accuracy  Vertical  (VA) 
+  BIT1   vAI, // Vertical Accuracy Indicator VA is specified (1) or not (0)
+  BIT6   spare_2_6, // '000000'B
+  BIT2   rTC        // '00'B Response Time is not specified
+  // '01'B delay Low 
+  // '10'B Delay tolerant
+  // '11'B Reserved 
+} with { variant "PRESENCE (elementIdentifier = '3E'O)"
+  variant (lengthIndicator) "LENGTHTO (vCI, vEL, spare_1_6, horizontalAccuracy,
+  hAI, verticalAccuracy, vAI, spare_2_6, rTC)"}
+
+
+// LSA Access Control Suppression - 48.008 subclause 3.2.2.61 
+type record BSSMAP_IE_LSAAccessControlSuppression
+{
+  OCT1   elementIdentifier, //'3F'O
+  BIT1   em,    // in emergency calls em = '1'B
+  BIT7   spare  // '0000000'B
+} with { variant "PRESENCE (elementIdentifier = '3F'O)" }
+
+
+// LCS Priority - 48.008 subclause 3.2.2.62 
+type record BSSMAP_IE_LCSPriority
+{
+  OCT1   elementIdentifier,// '43'O
+  INT1   lengthIndicator, 
+  OCT1   priority          // see "another FS" TS 29.002 for more detail
+} with { variant "PRESENCE (elementIdentifier = '43'O)"
+  variant (lengthIndicator) "LENGTHTO (priority)"}
+
+
+// Location Type - 48.008 subclause 3.2.2.63 
+type record BSSMAP_IE_LocationType
+{
+  OCT1   elementIdentifier,  // '44'O
+  INT1   lengthIndicator,    // 1 or 2 
+  OCT1   locationInformation,// '00000000'B current location  geographic 
+  // '00000001'B loc assistance info for target MS
+  // '00000010'B deciphering keys for broadcast
+  //             assistance data for MS  target 
+  //  all other values are reserved
+  OCT1   positioningMethod optional
+  // '00000000'B reserved
+  // '00000001'B Mobile E_OTD  Assisted 
+  // '00000010'B Mobile Based E_OTD
+  // '00000011'B GPS  Assisted 
+  // all other values are reserved
+} with {variant (lengthIndicator) "LENGTHTO (locationInformation, positioningMethod)"}
+
+
+// Location Estimate - 48.008 subclause 3.2.2.64 
+type record BSSMAP_IE_LocationEstimate
+{
+  OCT1   elementIdentifier, // '45'O
+  INT1   lengthIndicator,   // 1_22 on A_interface, 1_93 E_interface  on 
+  OCTN   geographicLocation 
+} with { variant "PRESENCE (elementIdentifier = '45'O)"
+  variant (lengthIndicator) "LENGTHTO (geographicLocation)"}
+
+
+// Positioning Data - 48.008 subclause 3.2.2.65 
+type record BSSMAP_IE_PositioningData
+{
+  OCT1   elementIdentifier, // '46'O
+  INT1   lengthIndicator, // 2_11 
+  BIT4   positioningDataDescriminator,  // '0000'B indicates usage of each  
+  //         positioning data method,
+  //         that was attempted
+  // all other values reserved  are 
+  BIT4   spare_1_4, // '0000'B
+  BSSMAP_FIELD_PositioningMethods  positioningMethod // of lengthIndicator 1_10
+} with { variant "PRESENCE (elementIdentifier = '46'O)"
+  variant (lengthIndicator) "LENGTHTO (positioningDataDescriminator, spare_1_4,positioningMethod)"}
+
+type record BSSMAP_FIELD_PositioningMethod
+{
+  BIT3  usage, // '000'B unsuccesful attempt due to failure or interruption  
+  // '001'B succesful attempt, results not used to generate location
+  // '010'B succesful attempt, results used to verify but not generate location
+  // '011'B succesful attempt, results used to generate location
+  // '100'B succesful attempt, MS supports multiple based positioning methods
+  BIT5  positioningMethod  // '00000'B Timing Advance
+  // '00001'B TOA
+  // '00010'B AOA     
+  // '00011'B Mobile EOTD  Assisted
+  // '00100'B Mobile Based E_OTD
+  // '00101'B Mobile GPS  Assisted
+  // '00110'B Mobile Based GPS
+  // '00111'B GPS  Conventional
+  // '01000'B _ '01111'B reserved for GSM         
+  // '10000'B _ '11111'B reserved for network
+  //                     specific positioning methods
+}
+
+type record  of BSSMAP_FIELD_PositioningMethod BSSMAP_FIELD_PositioningMethods 
+
+
+// LCS Cause - 48.008 subclause 3.2.2.66 
+type record BSSMAP_IE_LCSCause
+{
+  OCT1   elementIdentifier, // '47'O
+  INT1   lengthIndicator, // 1 (_> diagnosticValue invalid) 2  or 
+  BIT8   causeValue,   // '00000000'BUnspecified 
+  // '00000001'B System Failure
+  // '00000010'B Error  Protocol 
+  // '00000011'B Data missing in position request
+  // '00000100'B unexpected data value in request  position
+  // '00000101'B Position method failure
+  // '00000110'B Target unreachable  MS 
+  // '00000111'B Location request aborted
+  // '00001000'B Facility supported  not 
+  // '00001001'B intra_BSC_HO ongoing
+  // '00001010'B complete  intra_BSC_HO 
+  // '00001011'B congestion
+  //  all other values reserved  are 
+  OCT1   diagnosticValue optional
+} with { variant "PRESENCE (elementIdentifier = '47'O)"
+  variant (lengthIndicator) "LENGTHTO (causeValue, diagnosticValue)"}
+
+
+// LCS Client Type - 48.008 subclause 3.2.2.67
+type record BSSMAP_IE_LCSClientType
+{
+  OCT1   elementIdentifier, // '48'O
+  INT1   lengthIndicator, // 1 
+  BIT4   subtype, // all values unspecified/reserved except for:
+  // category = PLMN Operator:
+  // '0000'B Unspecified
+  // '0001'B Boradcast Service
+  // '0010'B O&M
+  // '0011'B Statistics  Anonymous 
+  // '0100'B Target MS Service Support
+  //  all other values reserved  are 
+  BIT4   category   // '0000'B Value added client
+  // '0010'B Operator  PLMN 
+  // '0011'B Emergency Services
+  // '0100'B Lawful Services  Intercept 
+  //  all other values are reserved
+} with { variant "PRESENCE (elementIdentifier = '48'O)"
+  variant (lengthIndicator) "LENGTHTO (subtype, category)"}
+
+
+// APDU - 48.008 subclause 3.2.2.68 (and 49.031 v5.3.0)
+type record BSSMAP_IE_APDU
+{
+  OCT1   elementIdentifier, //'49'O
+  LIN2_BO_LAST   lengthIndicator,
+  BIT7   protocolID optional, // '0000000'reserved  B 
+  // '0000001'BSSLAP  B  (the only currently supported) 
+  // '0000010'LLP  B 
+  // '0000011'B SMLCPP
+  BIT1   spare_1_1 optional,  // '0'B  
+  octetstring  embeddedMessage optional  // of length: 5_25
+} with { variant "PRESENCE (elementIdentifier = '49'O)"
+  variant (lengthIndicator)
+  "LENGTHTO (protocolID,spare_1_1,embeddedMessage)"}
+
+
+// Network Element Identity - 48.008 subclause 3.2.2.69 
+type record BSSMAP_IE_NetworkElementIdentity
+{
+  OCT1   elementIdentifier, //'4A'O
+  INT1   lengthIndicator,
+  BIT4   iDDiscriminator,
+  BIT4   spare,
+  OCTN   networkElementIdentity // Network Element Identity 
+} with {variant (lengthIndicator)
+  "LENGTHTO (iDDiscriminator,spare,networkElementIdentity)"}
+
+
+// GPS Assistant Data - 48.008 subclause 3.2.2.70 
+type record BSSMAP_IE_GPSAssistanceData
+{
+  OCT1   elementIdentifier, //'4B'O
+  INT1   lengthIndicator, // 1_38
+  OCT1   a_to_h,
+  OCT1   i_to_p,
+  OCTN   satellite_related_data // Satellite related data 
+} with { variant "PRESENCE (elementIdentifier = '4B'O)"
+  variant (lengthIndicator) "LENGTHTO (satellite_related_data,a_to_h,i_to_p)"}
+
+
+// Deciphering Key - 48.008 subclause 3.2.2.71 
+type record BSSMAP_IE_DecipheringKeys
+{
+  OCT1   elementIdentifier, // '4C'O
+  INT1   lengthIndicator,  // 1, 8, 15
+  BIT8   cipheringKeyFlag, // current ciphering key is used (1) or not (0)
+  BIT56  currentdecipheringKeyValue,
+  BIT56  nextdecipheringKeyValue optional
+} with { variant "PRESENCE (elementIdentifier = '4C'O)"
+  variant (lengthIndicator) "LENGTHTO (cipheringKeyFlag, 
+  currentdecipheringKeyValue, nextdecipheringKeyValue)"}
+
+
+// Return Error Request - 48.008 subclause 3.2.2.72 
+type record BSSMAP_IE_ReturnErrorRequest
+{
+  OCT1   elementIdentifier, //'4D'O
+  INT1   lengthIndicator,
+  OCT1   returnErrorType // Return Error Request 
+} with { variant "PRESENCE (elementIdentifier = '4D'O)"
+  variant (lengthIndicator) "LENGTHTO (returnErrorType)"}
+
+
+// Return Error Cause - 48.008 subclause 3.2.2.73 
+type record BSSMAP_IE_ReturnErrorCause
+{
+  OCT1   elementIdentifier, //'4E'O
+  INT1   lengthIndicator,
+  OCT1   returnErrorCause // Return Error Cause 
+} with { variant "PRESENCE (elementIdentifier = '4E'O)"
+  variant (lengthIndicator) "LENGTHTO (returnErrorCause)"}
+
+
+// Segmentation - 48.008 subclause 3.2.2.74 
+type record BSSMAP_IE_Segmentation
+{
+  OCT1   elementIdentifier, //'4F'O
+  INT1   lengthIndicator,
+  BIT4   segmentationNumber,
+  BIT1   segmentationBit,
+  BIT3   spare,
+  OCT2   messageID optional
+} with { variant "PRESENCE (elementIdentifier = '4F'O)"
+  variant (lengthIndicator)
+  "LENGTHTO (segmentationNumber,segmentationBit,spare,messageID)"}
+
+
+// Service Handover - 48.008 subclause 3.2.2.75 
+type record BSSMAP_IE_ServiceHandover
+{
+  OCT1   elementIdentifier, //'50'O
+  INT1   lengthIndicator,  
+  BIT3   serviceHandoverInfo,
+  BIT5   spare
+} with { variant "PRESENCE (elementIdentifier = '50'O)"
+  variant (lengthIndicator) "LENGTHTO (serviceHandoverInfo,spare)" }
+
+
+//Source RNC to Target RNC transparent information -48.008 subclause 3.2.2.76-77
+type record BSSMAP_IE_SourceToTargetRNCTransparentInfo
+{
+  OCT1   elementIdentifier, //'51'O or '52'O
+  INT1   lengthIndicator,
+  octetstring informationcontainer
+} with { variant (lengthIndicator) "LENGTHTO (informationcontainer)" }
+
+
+// GERAN Classmark - 48.008 subclause 3.2.2.78 
+type record BSSMAP_IE_GERANClassmark
+{
+  OCT1   elementIdentifier, //'53'O
+  INT1   lengthIndicator,
+  OCTN   GERANClassmark
+} with { variant "PRESENCE (elementIdentifier = '53'O)"
+  variant (lengthIndicator) "LENGTHTO (GERANClassmark)" }
+
+
+// GERAN BSC Container - 48.008 subclause 3.2.2.79
+type record BSSMAP_IE_GERANBSCContainer
+{
+  OCT1   elementIdentifier, //'54'O
+  INT1   lengthIndicator,
+  OCT1   codecType,
+  BIT3   maxNrofTCH,
+  BIT5   allowedRadioIFRates
+} with {variant (lengthIndicator) 
+  "LENGTHTO (codecType, maxNrofTCH, allowedRadioIFRates)" }
+
+
+// New BSS to Old BSS Information - 48.008 subclause 3.2.2.80 
+type record BSSMAP_IE_NewBSSToOldBSSInfo
+{
+  OCT1   elementIdentifier, //'61'O
+  INT1   lengthIndicator,
+  OCTN   newBSSToOldBSSIE optional
+} with { variant "PRESENCE (elementIdentifier = '61'O)"
+  variant (lengthIndicator) "LENGTHTO (newBSSToOldBSSIE)" }
+
+
+// Inter-System Information - 48.008 subclause 3.2.2.81 
+type record BSSMAP_IE_InterSystemInfo
+{
+  OCT1   elementIdentifier, //'63'O
+  INT1   lengthIndicator,
+  OCTN   interSystemInfoTranspCont
+} with { variant "PRESENCE (elementIdentifier = '63'O)"
+  variant (lengthIndicator) "LENGTHTO (interSystemInfoTranspCont)" }
+
+
+// SNA Access Information - 48.008 subclause 3.2.2.82 
+type record BSSMAP_IE_SNAAccessInfo
+{
+  OCT1   elementIdentifier, //'64'O
+  INT1   lengthIndicator,
+  AuthorisedPLMN_List   sNAAccessInfo
+} with { variant "PRESENCE (elementIdentifier = '64'O)"
+  variant (lengthIndicator) "LENGTHTO (sNAAccessInfo)" }
+
+type record of AuthorisedPLMN AuthorisedPLMN_List;
+
+type record AuthorisedPLMN
+{
+  INT1           lengthIndicator,
+  OCT3           mcc_mnc, 
+  RecordOfOCT2   authorisedSNA optional
+} with { variant (lengthIndicator) "LENGTHTO (mcc_mnc,authorisedSNA)" }
+
+
+// 3.2.2.83 VSTK_RAND Information
+type record BSSMAP_IE_VSTK_RAND
+{
+  OCT1   elementIdentifier,  // '65'
+  INT1   lengthIndicator,
+  OCT1   VSTK_RAND_1,
+  OCT2   VSTK_RAND_2,
+  OCT3   VSTK_RAND_3,
+  OCT4   VSTK_RAND_4,
+  BIT4   spare,
+  BIT4   VSTK_RAND_5
+} with { variant "PRESENCE (elementIdentifier = '65'O)"
+  variant (lengthIndicator) 
+  "LENGTHTO (VSTK_RAND_1, VSTK_RAND_2, VSTK_RAND_3, VSTK_RAND_4, spare, VSTK_RAND_5)"}
+
+
+// 3.2.2.84    VSTK information
+type record BSSMAP_IE_VSTK
+{
+  OCT1   elementIdentifier,  // '66'
+  INT1   lengthIndicator,
+  OCT16  VSTK
+} with { variant "PRESENCE (elementIdentifier = '66'O)"
+  variant (lengthIndicator) "LENGTHTO (VSTK)"}
+
+
+// 3.2.2.85 Paging Information
+type record BSSMAP_IE_PagingInformation
+{
+  OCT1   elementIdentifier,  // '67'
+  INT1   lengthIndicator,
+  BIT1   VGCS_or_VBS, // 0: not a member of any VGCS/VBS-group
+  BIT2   pagingCause, 
+  BIT5   spare
+} with { variant "PRESENCE (elementIdentifier = '67'O)"
+  variant (lengthIndicator) 
+  "LENGTHTO (VGCS_or_VBS, pagingCause, spare)"}
+
+
+// 3.2.2.86 IMEI
+type record BSSMAP_IE_IMEI
+{
+  OCT1   elementIdentifier,  // '68'
+  INT1   lengthIndicator,
+  BIT3   typeOfIdentity,
+  BIT1   oddEvenIndicator,  // '0'B even / 1'B odd number of identity digits   
+  HEX5_16  digits           // if nr of digits is even, the last digit: '1111'B
+} with { variant "PRESENCE (elementIdentifier = '68'O)"
+  variant (lengthIndicator) 
+  "LENGTHTO (typeOfIdentity,oddEvenIndicator,digits)";
+  variant "PADDING(yes),PADDING_PATTERN('1'B)"}
+
+
+// 3.2.2.87 Velocity Estimate
+type record BSSMAP_IE_VelocityEstimate
+{
+  OCT1   elementIdentifier,  // '55'
+  INT1   lengthIndicator,
+  OCTN   velocityEstimate
+} with { variant "PRESENCE (elementIdentifier = '55'O)"
+  variant (lengthIndicator) "LENGTHTO (velocityEstimate)"}
+
+
+// 3.2.2.88 VGCS Feature Flags
+type record BSSMAP_IE_VGCS_FeatureFlags
+{
+  OCT1   elementIdentifier,  // '69'
+  INT1   lengthIndicator,
+  BIT1   TP_Ind, // 0: Talker Priority not supported; 1: Talker Priority supported
+  BIT2   AS_Ind, // least sig. bit: 0: No A-interface circuit sharing; 1: A-interface circuit sharing;
+  // most sig. bit: 0: No A-interface link sharing; 1: A-interface link sharing
+  BIT1   BSS_Res, // 0: No re-establishment of the group or broadcast call by the BSS;
+  // 1:  Re-establishment of the group or broadcast call by the BSS
+  BIT1   tCP,
+  BIT3   spare
+} with { variant "PRESENCE (elementIdentifier = '69'O)"
+  variant (lengthIndicator)
+  "LENGTHTO (TP_Ind, AS_Ind, BSS_Res, tCP, spare)"}
+
+
+// Talker Priority - 48.008 subclause 3.2.2.89 
+type record BSSMAP_IE_TalkerPriority
+{
+  OCT1   elementIdentifier,  // '6A'O
+  BIT2   priority,
+  // 0 0         Normal Priority
+  // 0 1         Privileged Priority
+  // 1 0         Emergency Priority
+  // 1 1         reserved for future use
+  BIT6   spare    // 1..9
+} with { variant "PRESENCE (elementIdentifier = '6A'O)" }
+
+
+// 3.2.2.90 Emergency Set Indication
+type record BSSMAP_IE_EmergencySetIndication
+{
+  OCT1   elementIdentifier  // '6B'
+} with { variant "PRESENCE (elementIdentifier = '6B'O)" }
+
+
+// 3.2.2.91  Talker Identity
+type record BSSMAP_IE_TalkerIdentity
+{
+  OCT1   elementIdentifier,  // '6C'
+  INT1   lengthIndicator,
+  BIT3   fillerBits,
+  BIT5   spare,
+  OCT17  talkerIdentity
+} with { variant "PRESENCE (elementIdentifier = '6C'O)"
+  variant (lengthIndicator) 
+  "LENGTHTO (fillerBits, spare, talkerIdentity)"}
+
+
+// 3.2.2.92 SMS to VGCS
+type octetstring OCT248 length(0..248);
+
+type record BSSMAP_IE_SMS_to_VGCS
+{
+  OCT1    elementIdentifier,  // '6E'
+  INT1    lengthIndicator,
+  OCT248  SMS
+} with {variant (lengthIndicator) 
+  "LENGTHTO (SMS)"}
+
+
+// 3.2.2.93 VGCS talker mode
+type record BSSMAP_IE_VGCS_TalkerMode
+{
+  OCT1    elementIdentifier,  // '6F'
+  INT1    lengthIndicator,
+  BIT2    spare,
+  BIT4    groupCipherKeyNumber,
+  BIT2    RR_mode // 0 0: dedicated mode (i.e. dedicated channel)
+  // 0 1: group transmit mode (i.e. voice group channel)
+  // Other values are reserved for future use.
+} with {variant (lengthIndicator) 
+  "LENGTHTO (spare, groupCipherKeyNumber, RR_mode)"}
+
+
+// 3.2.2.94    VGCS/VBS Cell Status
+type record BSSMAP_IE_VGCS_VBS_CellStatus
+{
+  OCT1    elementIdentifier,  // '70'
+  INT1    lengthIndicator,
+  BIT3    status,  
+  BIT5    spare
+} with { variant "PRESENCE (elementIdentifier = '70'O)"
+  variant (lengthIndicator) "LENGTHTO (status, spare)"}
+ 
+  
+// 3.2.2.95 GANSS Assistance Data 
+type record BSSMAP_IE_GANSS_AssistanceData  
+{  
+  OCT1    elementIdentifier,  //'75'   
+  INT1    lengthIndicator,
+  OCTN    gANSS_AssistanceDataInfo    // 49.031 Section 10.31  
+} with { variant "PRESENCE (elementIdentifier = '75'O)"
+  variant (lengthIndicator) "LENGTHTO (gANSS_AssistanceDataInfo)"}  
+
+  
+// 3.2.2.96 GANSS Positioning Data   
+type record BSSMAP_IE_GANSS_PositioningData  
+{    
+  OCT1    elementIdentifier, // '76' 
+  INT1    lengthIndicator,
+  GANSS_PositioningData    gANSS_PositioningDataInfo 
+} with { variant "PRESENCE (elementIdentifier = '76'O)"
+  variant (lengthIndicator) "LENGTHTO (gANSS_PositioningDataInfo)"}  
+
+type record GANSS_PositioningData // 49.031 Section 10.32
+{
+ BIT3     usage,
+ BIT3     gANSS_Id,
+ BIT2     method
+}
+
+
+// 3.2.2.97 GANSS Location Type
+type record BSSMAP_IE_GANSS_LocationType
+{
+ OCT1    elementIdentifier, // '77'
+ INT1    lengthIndicator,
+ GANSS_LocationType  gANSS_LocationTypeInfo
+} with { variant "PRESENCE (elementIdentifier = '77'O)"
+  variant (lengthIndicator) "LENGTHTO (gANSS_LocationTypeInfo)"}  
+
+type record GANSS_LocationType // 49.031 Section 10.33
+{
+ BIT1      galileo,
+ BIT1      sBAS,
+ BIT1      modernizedGPS,
+ BIT1      qZSS,
+ BIT1      gLONASS,
+ BIT3      spare
+}
+
+
+// 3.2.2.98 Application data 
+type record BSSMAP_IE_ApplicationData
+{
+ OCT1    elementIdentifier, // '78'
+ INT1    lengthIndicator,
+ OCT9    applicationDataInfo   //  "implementation-specific" according to 44.018 v8.7.0 Section 10.5.2.72
+} with { variant "PRESENCE (elementIdentifier = '78'O)"
+  variant (lengthIndicator) "LENGTHTO (applicationDataInfo)"}  
+
+
+// 3.2.2.99 Data Identity
+type record BSSMAP_IE_DataIdentity
+{
+ OCT1          elementIdentifier, // '79'  
+ INT1          lengthIndicator, 
+ DataIdentity  dataIdentityInfo
+} with { variant "PRESENCE (elementIdentifier = '79'O)"
+  variant (lengthIndicator) "LENGTHTO (dataIdentityInfo)"} 
+
+ 
+type record DataIdentity  // 44.018 v8.7.0 Section 10.5.2.73 
+{
+ BIT1     aI,
+ BIT4     dI,
+ BIT3     dP  
+}
+
+
+// 3.2.2.100 Application Data Information
+type record BSSMAP_IE_ApplicationDataInformation
+{
+ OCT1          elementIdentifier, // 7A'
+ INT1          lengthIndicator,
+ BIT1          bT_Ind,
+ BIT7          spare
+} with { variant "PRESENCE (elementIdentifier = '7A'O)"
+  variant (lengthIndicator) "LENGTHTO (bT_Ind, spare)"} 
+
+
+// 3.2.2.101 MSISDN
+type record BSSMAP_IE_MSISDN
+{
+ OCT1          elementIdentifier, // '7B'
+ INT1          lengthIndicator,
+ octetstring   msisdn  
+} with { variant "PRESENCE (elementIdentifier = '7B'O)"
+  variant (lengthIndicator) "LENGTHTO (msisdn)"} 
+ 
+ 
+// 3.2.2.102    AoIP Transport Layer Address
+type record BSSMAP_IE_AoIP_TransportLayerAddress
+{
+  OCT1                    elementIdentifier,  // '7C'
+  INT1                    lengthIndicator,
+  BSSMAP_FIELD_IPAddress  ipAddress,
+  LIN2_BO_LAST            uDPPortValue
+} with { 
+  variant "PRESENCE (elementIdentifier = '7C'O)";
+  variant (lengthIndicator) "LENGTHTO (ipAddress, uDPPortValue)";
+  variant (ipAddress) "CROSSTAG(ipv4,lengthIndicator = 6;
+                                ipv6,lengthIndicator = 18)"
+}
+
+type union BSSMAP_FIELD_IPAddress
+{
+  OCT4    ipv4,
+  OCT16   ipv6
+}
+
+//3.2.2.103 Speech Codec List
+type record BSSMAP_IE_SpeechCodecList
+{
+  OCT1                       elementIdentifier,  // '7D'
+  INT1                       lengthIndicator,
+  BSSMAP_FIELD_CodecElements codecElements
+} with {
+  variant "PRESENCE (elementIdentifier = '7D'O)";
+  variant (lengthIndicator) "LENGTHTO (codecElements)"
+}
+
+type record of BSSMAP_FIELD_CodecElement BSSMAP_FIELD_CodecElements;
+
+type record BSSMAP_FIELD_CodecElement
+{
+  BSSMAP_FIELD_CodecType  codecType,
+  BIT1                    tF,
+  BIT1                    pT,
+  BIT1                    pI,
+  BIT1                    fI,
+  OCT1                    extendedCodecType optional,
+  BIT8                    s0_7 optional,
+  BIT8                    s8_15 optional
+} with { 
+  variant (extendedCodecType) "PRESENCE (codecType = CodecExtension)";
+  variant (s0_7) "PRESENCE  (codecType = FR_AMR, 
+                             codecType = HR_AMR,
+                             codecType = FR_AMR_WB,
+                             codecType = OHR_AMR,
+                             codecType = OFR_AMR_WB,
+                             codecType = OHR_AMR_WB,
+                             extendedCodecType = 'FD'O)";
+  variant (s8_15) "PRESENCE (codecType = FR_AMR, 
+                             codecType = HR_AMR,
+                             codecType = OHR_AMR)";
+}
+
+type enumerated BSSMAP_FIELD_CodecType
+{
+  GSM_FR(0),
+  GSM_HR(1),
+  GSM_EFR(2),
+  FR_AMR(3),
+  HR_AMR(4),
+  FR_AMR_WB(9),
+  OHR_AMR(11),
+  OFR_AMR_WB(12),
+  OHR_AMR_WB(13),
+  CodecExtension(15)
+}
+
+//3.2.2.104 Speech Codec
+type record BSSMAP_IE_SpeechCodec
+{
+  OCT1                       elementIdentifier,  // '7E'
+  INT1                       lengthIndicator,
+  BSSMAP_FIELD_CodecElements codecElements
+} with {
+  variant "PRESENCE (elementIdentifier = '7E'O)";
+  variant (lengthIndicator) "LENGTHTO (codecElements)"
+}
+
+//3.2.2.105 Call Identifier
+type record BSSMAP_IE_CallIdentifier
+{
+ OCT1                       elementIdentifier, //'7F'
+ OCT4                       callIdentifierInfo
+} with { variant "PRESENCE (elementIdentifier = '7F'O)";}
+
+//3.2.2.106 Call Identifier List
+type record BSSMAP_IE_CallIdentifierList
+{
+ OCT1                       elementIdentifier, // '80'
+ INT1                       lengthIndicator,
+ OCT4List                   callIdentifierListInfo length (1..62)    
+} with { variant "PRESENCE (elementIdentifier = '80'O)";
+         variant (lengthIndicator) "LENGTHTO (callIdentifierListInfo)"}
+
+//3.2.2.107  A Interface Selector For Reset
+type record BSSMAP_IE_A_InterfaceSelectorForReset
+{
+ OCT1                       elementIdentifier,  // '81'
+ BIT1                       rTD,
+ BIT1                       rIP,
+ BIT6                       spare
+} with { variant "PRESENCE (elementIdentifier = '81'O)";} 
+
+
+//3.2.2.109 KC128
+type record BSSMAP_IE_KC128
+{
+ OCT1                       elementIdentifier,  // '83'
+ OCT16                      kC128_Value  
+} with { variant "PRESENCE (elementIdentifier = '83'O)";}
+
+
+//3.2.2.110 CSG Identifier
+type record BSSMAP_IE_CSG_Identifier
+{
+ OCT1                       elementIdentifier,   //84
+ INT1                       lengthIndicator,
+ bitstring                  cSG_ID_Value length(27),
+ BIT5                       spare1,
+ BIT1                       cellAccessMode,
+ BIT7                       spare2
+} with { variant "PRESENCE (elementIdentifier = '84'O)";
+         variant (lengthIndicator) "LENGTHTO (cSG_ID_Value,spare1,cellAccessMode,spare2)"}
+
+
+//3.2.2.111 Redirect Attempt Flag
+type record BSSMAP_IE_RedirectAttemptFlag
+{
+ OCT1                       elementIdentifier   //85
+} with { variant "PRESENCE (elementIdentifier = '85'O)";}
+
+
+//3.2.2.112 Reroute Reject Cause
+type record BSSMAP_IE_RerouteRejectCause
+{
+ OCT1                       elementIdentifier,   //86
+ OCT1                       rerouteRejectCauseValue 
+} with { variant "PRESENCE (elementIdentifier = '86'O)";}
+
+
+//3.2.2.113 Send Sequence Number
+type record BSSMAP_IE_SendSequenceNumber
+{
+ OCT1                       elementIdentifier,   //87
+ BIT6                       spare,
+ INT2b                      sendSequenceNumber
+} with { variant "PRESENCE (elementIdentifier = '87'O)";}
+
+
+//3.2.2.114 Reroute Complete Outcome
+type record BSSMAP_IE_RerouteCompleteOutcome
+{
+ OCT1                       elementIdentifier,   //88
+ OCT1                       rerouteCompleteOutcomeValue
+} with { variant "PRESENCE (elementIdentifier = '88'O)";}
+
+
+//3.2.2.115 Global Call Reference
+type record BSSMAP_IE_GlobalCallReference
+{
+ OCT1                       elementIdentifier,  //89
+ INT1                       lengthIndicator,
+ GlobalCallReferenceValue   globalCallReferenceValue
+} with { variant "PRESENCE (elementIdentifier = '89'O)";
+         variant (lengthIndicator) "LENGTHTO (globalCallReferenceValue)"}
+
+//3GPP TS 29.205 B.2.1.9
+type record GlobalCallReferenceValue
+{
+ INT1                       networkIDLengthIndicator,
+ octetstring                networkID length (3..5), 
+ INT1                       nodeIDLengthIndicator, 
+ OCT2                       nodeID,
+ INT1                       callReferenceIDLengthIndicator,  
+ OCT5                       callReferenceID         
+} with { 
+  variant (networkIDLengthIndicator) "LENGTHTO (networkID)"
+  variant (nodeIDLengthIndicator) "LENGTHTO (nodeID)"  
+  variant (callReferenceIDLengthIndicator) "LENGTHTO (callReferenceID )" 
+  }
+
+
+//3.2.2.116 LCLS Configuration
+type record BSSMAP_IE_LCLS_Configuration
+{
+ OCT1                       elementIdentifier,  //8A
+ BIT4                       lCLS_ConfigurationValue,  
+ BIT4                       spare
+} with { variant "PRESENCE (elementIdentifier = '8A'O)";}
+
+
+//3.2.2.117 LCLS Connection Status Control
+type record BSSMAP_IE_LCLS_ConnectionStatusControl
+{
+ OCT1                       elementIdentifier,  //8B
+ BIT4                       lCLS_ConnectionStatusControlValue,
+ BIT4                       spare
+} with { variant "PRESENCE (elementIdentifier = '8B'O)";}
+
+
+//3.2.2.118 LCLS Correlation Not Needed 
+type record BSSMAP_IE_LCLS_CorrelationNotNeeded 
+{
+ OCT1                       elementIdentifier  //8C
+} with { variant "PRESENCE (elementIdentifier = '8C'O)";}
+
+
+//3.2.2.119 LCLS BSS Status
+type record BSSMAP_IE_LCLS_BSS_Status
+{
+ OCT1                       elementIdentifier,  //8D
+ BIT4                       lCLS_BSS_StatusValue,
+ BIT4 			    spare			    
+} with { variant "PRESENCE (elementIdentifier = '8D'O)";}
+
+
+//3.2.2.120 LCLS Break Request
+type record BSSMAP_IE_LCLS_BreakRequest
+{
+ OCT1                       elementIdentifier  //8E
+} with { variant "PRESENCE (elementIdentifier = '8E'O)";}
+
+//3.2.2.121 CSFB Indication
+type record BSSMAP_IE_CSFB_Indication
+{
+ OCT1                       elementIdentifier  //8F
+} with { variant "PRESENCE (elementIdentifier = '8F'O)";}
+
+
+
+///////////////////////////////////////////////////////
+// Used in HANDOVER REQUEST message
+type union BSSMAP_IE_ClassmarkInformationType 
+{
+  BSSMAP_IE_ClassmarkInformationType1  classmarkInformationType1,
+  BSSMAP_IE_ClassmarkInformationType2  classmarkInformationType2
+}
+
+
+///////////////////////////////////////////
+//   BSSMAP message definition
+///////////////////////////////////////////
+
+// ASSIGNMENT REQUEST - 48.008 subclause 3.2.1.1 
+type record PDU_BSSMAP_AssignmentRequest
+{
+  OCT1					messageType, // '01'O
+  BSSMAP_IE_ChannelType			channelType,
+  BSSMAP_IE_Layer3HeaderInfo		layer3HeaderInfo optional,
+  BSSMAP_IE_Priority			priority optional,
+  BSSMAP_IE_CircuitIdentityCode		circuitIdentityCode optional,
+  BSSMAP_IE_DownLinkDTXFlag		downLinkDTX_Flag optional,
+  BSSMAP_IE_InterferenceBandToBeUsed	interferenceBandToBeUsed optional,
+  BSSMAP_IE_ClassmarkInformationType2	classmarkInformationType2 optional,
+  BSSMAP_IE_GroupCallReference		groupCallReference optional,
+  BSSMAP_IE_TalkerFlag  		talkerFlag optional,
+  BSSMAP_IE_ConfigurationEvolutionIndication  configurationEvolutionIndication optional,
+  BSSMAP_IE_LSAAccessControlSuppression	lsaAccesControlSuppression optional,
+  BSSMAP_IE_ServiceHandover		serviceHandover optional,
+  BSSMAP_IE_EncryptionInformation       encryptionInformation optional,
+  BSSMAP_IE_TalkerPriority              talkerPriority optional,
+  BSSMAP_IE_AoIP_TransportLayerAddress  aoIPTransportLayer optional,
+  BSSMAP_IE_SpeechCodecList             codecList optional,
+  BSSMAP_IE_CallIdentifier              callIdentifier optional,
+  BSSMAP_IE_KC128                       kC128 optional,
+  BSSMAP_IE_GlobalCallReference         globalCallReference optional,
+  BSSMAP_IE_LCLS_Configuration          lCLS_Configuration optional,
+  BSSMAP_IE_LCLS_ConnectionStatusControl   lCLS_ConnectionStatusControl optional,
+  BSSMAP_IE_LCLS_CorrelationNotNeeded   lCLS_CorrelationNotNeeded optional
+} with { variant "PRESENCE (messageType = '01'O)" }
+
+
+// ASSIGNMENT COMPLETE - 48.008 subclause 3.2.1.2 
+type record PDU_BSSMAP_AssignmentComplete
+{
+  OCT1					messageType, // '02'O
+  BSSMAP_IE_RR_Cause			rR_Cause optional,
+  BSSMAP_IE_CircuitIdentityCode		circuitIdentityCode optional,
+  BSSMAP_IE_CellIdentifier		cellIdentifier optional,
+  BSSMAP_IE_ChosenChannel		chosenChannel optional,
+  BSSMAP_IE_ChosenEncryptionAlgorithm	chosenEncryptionAlgorithm optional,
+  BSSMAP_IE_CircuitPool			circuitPool optional,
+  BSSMAP_IE_SpeechVersion		speechVersion optional,
+  BSSMAP_IE_LSAIdentifier		lSAIdentifier optional,
+  BSSMAP_IE_TalkerPriority              talkerPriority optional,
+  BSSMAP_IE_AoIP_TransportLayerAddress  aoIPTransportLayer optional,
+  BSSMAP_IE_SpeechCodec                 speechCodec optional,
+  BSSMAP_IE_SpeechCodecList             codecList optional,
+  BSSMAP_IE_LCLS_BSS_Status             lCLS_BSS_Status optional
+} with { variant "PRESENCE (messageType = '02'O)" }
+
+// ASSIGNMENT FAILURE - 48.008 subclause 3.2.1.3
+type record PDU_BSSMAP_AssignmentFailure
+{
+  OCT1					messageType, // '03'O
+  BSSMAP_IE_Cause			cause,
+  BSSMAP_IE_RR_Cause			rR_Cause optional,
+  BSSMAP_IE_CircuitPool			circuitPool optional,
+  BSSMAP_IE_CircuitPoolList		circuitPoolList optional,
+  BSSMAP_IE_TalkerPriority              talkerPriority optional,
+  BSSMAP_IE_SpeechCodecList             codecList optional
+} with { variant "PRESENCE (messageType = '03'O)" }
+
+// BLOCK - 48.008 subclause 3.2.1.4 
+type record PDU_BSSMAP_Block
+{
+  OCT1 					messageType, // H'40
+  BSSMAP_IE_CircuitIdentityCode		circuitIdentityCode, 
+  BSSMAP_IE_Cause			cause,
+  BSSMAP_IE_ConnectionReleaseRequested	connectionReleaseRequested optional
+} with { variant "PRESENCE (messageType = '40'O)" }
+
+
+// BLOCKING ACKNOWLEDGE - 48.008 subclause 3.2.1.5
+type record PDU_BSSMAP_BlockingAck
+{
+  OCT1					messageType, // H'41
+  BSSMAP_IE_CircuitIdentityCode		circuitIdentityCode 
+} with { variant "PRESENCE (messageType = '41'O)" }
+
+
+// UNBLOCK - 48.008 subclause 3.2.1.6
+type record PDU_BSSMAP_Unblock
+{
+  OCT1					messageType, // H'42
+  BSSMAP_IE_CircuitIdentityCode		circuitIdentityCode
+} with { variant "PRESENCE (messageType = '42'O)" }
+
+
+// UNBLOCKING ACKNOWLEDGE - 48.008 subclause 3.2.1.7
+type record PDU_BSSMAP_UnblockAck
+{
+  OCT1					messageType, // H'43
+  BSSMAP_IE_CircuitIdentityCode		circuitIdentityCode
+} with { variant "PRESENCE (messageType = '43'O)" }
+
+
+// HANDOVER REQUEST - 48.008 subclause 3.2.1.8
+type record PDU_BSSMAP_HandoverRequest
+{
+  OCT1				     	messageType, // '10'O
+  BSSMAP_IE_ChannelType		     	channelType,
+  BSSMAP_IE_EncryptionInformation    	encryptionInformation,
+  BSSMAP_IE_ClassmarkInformationType   	classmarkInformationType, //Type 1 or 2
+  BSSMAP_IE_CellIdentifier		cellIdentifierSource,
+  BSSMAP_IE_Priority			priority optional,
+  BSSMAP_IE_CircuitIdentityCode		circuitIdentityCode optional,
+  BSSMAP_IE_DownLinkDTXFlag		downLinkDTX_Flag optional,
+  BSSMAP_IE_CellIdentifier		cellIdentifierTarget,
+  BSSMAP_IE_InterferenceBandToBeUsed	interferenceBandToBeUsed optional,
+  BSSMAP_IE_Cause			cause optional,
+  BSSMAP_IE_ClassmarkInformationType3	classmarkInformationType3 optional,
+  BSSMAP_IE_CurrentChannelType1		currentChannelType1 optional,
+  BSSMAP_IE_SpeechVersion		speechVersion optional,
+  BSSMAP_IE_GroupCallReference		groupCallReference optional,
+  BSSMAP_IE_TalkerFlag			talkerFlag optional,
+  BSSMAP_IE_ConfigurationEvolutionIndication configurationEvolutionIndication optional,
+  BSSMAP_IE_ChosenEncryptionAlgorithm	chosenEncryptionAlgorithm optional,
+  BSSMAP_IE_OldToNewBSSInfo		oldToNewBSSInfo optional,
+  BSSMAP_IE_LSAInformation		lSAInformation optional,
+  BSSMAP_IE_LSAAccessControlSuppression	lSAAccessControlSuppression optional,
+  BSSMAP_IE_ServiceHandover		serviceHandover optional,
+  BSSMAP_IE_IMSI			iMSI_bssmap optional,
+  BSSMAP_IE_SourceToTargetRNCTransparentInfo sourceToTargetRNCTransparentInfo optional,
+  BSSMAP_IE_SourceToTargetRNCTransparentInfo sourceToTargetRNCTransparentInfoCDMA optional,
+  BSSMAP_IE_SNAAccessInfo		sNAAccessInformation optional,
+  BSSMAP_IE_TalkerPriority              talkerPriority optional,
+  BSSMAP_IE_AoIP_TransportLayerAddress  aoIPTransportLayer optional,
+  BSSMAP_IE_SpeechCodecList             codecList optional,
+  BSSMAP_IE_CallIdentifier              callIdentifier optional,              
+  BSSMAP_IE_KC128                       kC128 optional,
+  BSSMAP_IE_GlobalCallReference         globalCallReference optional,
+  BSSMAP_IE_LCLS_Configuration          lCLS_Configuration optional,
+  BSSMAP_IE_LCLS_ConnectionStatusControl     connectionStatusControl optional    
+} with { variant "PRESENCE (messageType = '10'O)"
+  variant "TAG (
+  sourceToTargetRNCTransparentInfo,	elementIdentifier = '51'O;
+  sourceToTargetRNCTransparentInfoCDMA,	elementIdentifier = '52'O)"}
+
+
+// HANDOVER REQUIRED - 48.008 subclause 3.2.1.9 
+type record PDU_BSSMAP_HandoverRequired
+{
+  OCT1					messageType, // '11'O
+  BSSMAP_IE_Cause			cause,
+  BSSMAP_IE_ResponseRequest		responseRequest optional,
+  BSSMAP_IE_CellIdentifierList		cellIdentifierList,
+  BSSMAP_IE_CircuitPoolList		circuitPoolList optional,
+  BSSMAP_IE_CurrentChannelType1		currentChannelType1 optional,
+  BSSMAP_IE_SpeechVersion		speechVersion optional,
+  BSSMAP_IE_QueueingIndicator		queueingIndicator optional,
+  BSSMAP_IE_OldToNewBSSInfo		oldToNewBSSInfo optional,
+  BSSMAP_IE_SourceToTargetRNCTransparentInfo sourceToTargetRNCTransparentInfo optional,
+  BSSMAP_IE_SourceToTargetRNCTransparentInfo sourceToTargetRNCTransparentInfoCDMA optional,
+  BSSMAP_IE_GERANClassmark		gERANClassmark optional,
+  BSSMAP_IE_TalkerPriority              talkerPriority optional,
+  BSSMAP_IE_SpeechCodec                 speechCodec optional,
+  BSSMAP_IE_CSG_Identifier              cSG_Identifier optional
+} with { variant "PRESENCE (messageType = '11'O)"
+  variant "TAG (
+  sourceToTargetRNCTransparentInfo,	elementIdentifier = '51'O;
+  sourceToTargetRNCTransparentInfoCDMA,	elementIdentifier = '52'O)"}
+
+
+// HANDOVER REQUEST ACKNOWLEDGE - 48.008 subclause 3.2.1.10
+type record PDU_BSSMAP_HandoverRequestAck
+{
+  OCT1					messageType, // '12'O
+  BSSMAP_IE_Layer3Information	        layer3Information,
+  BSSMAP_IE_ChosenChannel		chosenChannel optional,
+  BSSMAP_IE_ChosenEncryptionAlgorithm	chosenEncryptionAlgorithm optional,
+  BSSMAP_IE_CircuitPool			circuitPool optional,
+  BSSMAP_IE_SpeechVersion		speechVersion optional,
+  BSSMAP_IE_CircuitIdentityCode		circuitIdentityCode optional,
+  BSSMAP_IE_LSAIdentifier		lSAIdentifier optional,
+  BSSMAP_IE_NewBSSToOldBSSInfo 		newBSSToOldBSSInfo optional,
+  BSSMAP_IE_InterSystemInfo 		interSystemInformation optional,
+  BSSMAP_IE_TalkerPriority              talkerPriority optional,
+  BSSMAP_IE_AoIP_TransportLayerAddress  aoIPTransportLayer optional,
+  BSSMAP_IE_SpeechCodecList             codecList optional,
+  BSSMAP_IE_SpeechCodec                 speechCodec optional,
+  BSSMAP_IE_LCLS_BSS_Status             lCLS_bSS_Status optional
+} with { variant "PRESENCE (messageType = '12'O)" }
+
+
+// HANDOVER COMMAND - 48.008 subclause 3.2.1.11
+type record PDU_BSSMAP_HandoverCommand
+{
+  OCT1					messageType, // '13'O
+  BSSMAP_IE_Layer3Information	layer3Information,
+  BSSMAP_IE_CellIdentifier		cellIdentifier optional,
+  BSSMAP_IE_NewBSSToOldBSSInfo		newBSSToOldBSSInfo optional,
+  BSSMAP_IE_TalkerPriority      talkerPriority optional
+} with { variant "PRESENCE (messageType = '13'O)" }
+
+
+// HANDOVER COMPLETE -  48.008 subclause 3.2.1.12
+type record PDU_BSSMAP_HandoverComplete
+{
+  OCT1					messageType,  // H'14
+  BSSMAP_IE_RR_Cause			rR_Cause optional,
+  BSSMAP_IE_TalkerPriority              talkerPriority optional,
+  BSSMAP_IE_SpeechCodec                 speechCodec optional,
+  BSSMAP_IE_SpeechCodecList             codecList optional,
+  BSSMAP_IE_ChosenEncryptionAlgorithm   chosenEncryptionAlgorithm optional,
+  BSSMAP_IE_ChosenChannel               chosenChannel optional,
+  BSSMAP_IE_LCLS_BSS_Status             lCLS_BSS_Status optional
+} with { variant "PRESENCE (messageType = '14'O)" }
+
+
+// HANDOVER SUCCEEDED -  48.008 subclause 3.2.1.13
+type record PDU_BSSMAP_HandoverSucceeded
+{
+  OCT1					messageType,  // H'15
+  BSSMAP_IE_TalkerPriority      talkerPriority optional
+} with { variant "PRESENCE (messageType = '15'O)" }
+
+
+// HANDOVER CANDIDATE ENQUIRE -  48.008 subclause 3.2.1.14
+type record PDU_BSSMAP_HandoverCandidateEnquire
+{
+  OCT1					messageType,  // H'18
+  BSSMAP_IE_NumberOfMSs    		numberOfMSs,
+  BSSMAP_IE_CellIdentifierList		cellIdentifierList,
+  BSSMAP_IE_CellIdentifier		cellIdentifier
+} with { variant "PRESENCE (messageType = '18'O)" }
+
+
+// HANDOVER CANDIDATE RESPONSE -  48.008 subclause 3.2.1.15
+type record PDU_BSSMAP_HandoverCandidateResponse
+{
+  OCT1					messageType,  // H'19
+  BSSMAP_IE_NumberOfMSs   		numberOfMSs,
+  BSSMAP_IE_CellIdentifier		cellIdentifier
+} with { variant "PRESENCE (messageType = '19'O)" }
+
+
+// HANDOVER FAILURE  - 48.008 subclause 3.2.1.16
+type record PDU_BSSMAP_HandoverFailure
+{
+  OCT1					messageType,
+  BSSMAP_IE_Cause			cause,
+  BSSMAP_IE_RR_Cause			rR_Cause optional,
+  BSSMAP_IE_CircuitPool			circuitPool optional,
+  BSSMAP_IE_CircuitPoolList		circuitPoolList optional,
+  BSSMAP_IE_GERANClassmark		gERANClassmark optional,
+  BSSMAP_IE_NewBSSToOldBSSInfo 		newBSSToOldBSSInfo optional,
+  BSSMAP_IE_InterSystemInfo 		interSystemInformation optional,
+  BSSMAP_IE_TalkerPriority              talkerPriority optional,
+  BSSMAP_IE_SpeechCodecList             codecList optional  
+} with { variant "PRESENCE (messageType = '16'O)" }
+
+
+// RESOURCE REQUEST  - 48.008 subclause 3.2.1.17
+type record PDU_BSSMAP_ResourceRequest
+{
+  OCT1					messageType,
+  BSSMAP_IE_Periodicity			periodicity,
+  BSSMAP_IE_ResourceIndMethod		resourceIndicationMethod,
+  BSSMAP_IE_CellIdentifier		cellIdentifier,
+  BSSMAP_IE_ExtendedResourceInd		extendedResourceIndicator optional
+} with { variant "PRESENCE (messageType = '50'O)" }
+
+
+// RESOURCE INDICATION  - 48.008 subclause 3.2.1.18
+type record PDU_BSSMAP_ResourceIndication
+{
+  OCT1					messageType,
+  BSSMAP_IE_ResourceIndMethod		resourceIndicationMethod,
+  BSSMAP_IE_ResourceAvailable		resourceAvailable optional,
+  BSSMAP_IE_CellIdentifier		cellIdentifier,
+  BSSMAP_IE_TotalResourceAccessible	totalResourceAccessible optional
+} with { variant "PRESENCE (messageType = '51'O)" }
+
+// PAGING - 48.008 subclause 3.2.1.19
+type record PDU_BSSMAP_Paging
+{
+  OCT1					messageType, // '52'O
+  BSSMAP_IE_IMSI			iMSI,
+  BSSMAP_IE_TMSI			tMSI optional,
+  BSSMAP_IE_CellIdentifierList		cellIdentifierList,
+  BSSMAP_IE_ChannelNeeded		channelNeeded optional,
+  BSSMAP_IE_EMLPP_Priority		eMLPP_Priority optional,
+  BSSMAP_IE_PagingInformation   pagingInformation optional
+} with { variant "PRESENCE (messageType = '52'O)" }
+
+
+// CLEAR REQUEST - 48.008 subclause 3.2.1.20 
+type record PDU_BSSMAP_ClearRequest
+{
+  OCT1					messageType, // H'22
+  BSSMAP_IE_Cause			cause   
+} with { variant "PRESENCE (messageType = '22'O)" }
+
+
+// CLEAR COMMAND - 48.008 subclause 3.2.1.21
+type record PDU_BSSMAP_ClearCommand
+{
+  OCT1					messageType, // H'20
+  BSSMAP_IE_Layer3HeaderInfo		layer3HeaderInfo optional,
+  BSSMAP_IE_Cause			cause,
+  BSSMAP_IE_CSFB_Indication             cSFB_Indication optional
+} with { variant "PRESENCE (messageType = '20'O)" }
+
+
+// CLEAR COMPLETE - 48.008 subclause 3.2.1.22
+type record PDU_BSSMAP_ClearComplete
+{
+  OCT1					messageType   // H'21
+} with { variant "PRESENCE (messageType = '21'O)" }
+
+
+// RESET - 48.008 subclause 3.2.1.23
+type record PDU_BSSMAP_Reset
+{
+  OCT1					messageType, // H'30
+  BSSMAP_IE_Cause			cause,
+  BSSMAP_IE_A_InterfaceSelectorForReset a_InterfaceSelectorForReset optional
+} with { variant "PRESENCE (messageType = '30'O)" }
+
+
+// RESET ACKNOWLEDGE - 48.008 subclause 3.2.1.24
+type record PDU_BSSMAP_ResetAck
+{
+  OCT1					messageType,   // H'31
+  BSSMAP_IE_A_InterfaceSelectorForReset a_InterfaceSelectorForReset optional
+} with { variant "PRESENCE (messageType = '31'O)" }
+
+
+// HANDOVER PERFORMED - 48.008 subclause 3.2.1.25
+type record PDU_BSSMAP_HandoverPerformed
+{
+  OCT1					messageType,
+  BSSMAP_IE_Cause			cause,
+  BSSMAP_IE_CellIdentifier		cellIdentifier,
+  BSSMAP_IE_ChosenChannel		chosenChannel optional,
+  BSSMAP_IE_ChosenEncryptionAlgorithm   chosenEncryptionAlgorithm optional,
+  BSSMAP_IE_SpeechVersion		speechVersion optional,
+  BSSMAP_IE_LSAIdentifier		lSAIdentifier optional,
+  BSSMAP_IE_TalkerPriority              talkerPriority optional,
+  BSSMAP_IE_SpeechCodecList             codecList optional,
+  BSSMAP_IE_SpeechCodec                 speechCodec optional,
+  BSSMAP_IE_LCLS_BSS_Status             lCLS_BSS_Status optional
+} with { variant "PRESENCE (messageType = '17'O)" }
+
+// OVERLOAD - 48.008 subclause 3.2.1.26
+type record PDU_BSSMAP_Overload
+{
+  OCT1					messageType, // H'32
+  BSSMAP_IE_Cause			cause,
+  BSSMAP_IE_CellIdentifier		cellIdentifier optional
+} with { variant "PRESENCE (messageType = '32'O)" }
+
+
+// MSC INVOKE TRACE - 48.008 subclause 3.2.1.27
+type record PDU_BSSMAP_MSCInvokeTrace
+{
+  OCT1					messageType, // H'36
+  BSSMAP_IE_TraceType			traceType,       
+  BSSMAP_IE_TriggerId			triggerId optional,
+  BSSMAP_IE_TraceReference		traceReference,
+  BSSMAP_IE_TransactionId		transactionId optional,
+  BSSMAP_IE_MobileIdentity		mobileIdentity optional,
+  BSSMAP_IE_OMCId			oMCId optional
+} with { variant "PRESENCE (messageType = '36'O)" }
+
+
+// BSS INVOKE TRACE - 48.008 subclause 3.2.1.28
+type record PDU_BSSMAP_BSSInvokeTrace
+{
+  OCT1					messageType, // H'37
+  BSSMAP_IE_TraceType			traceType,       
+  BSSMAP_IE_ForwardIndicator		forwardIndicator optional,
+  BSSMAP_IE_TriggerId			triggerId optional,
+  BSSMAP_IE_TraceReference		traceReference,
+  BSSMAP_IE_TransactionId		transactionId optional,
+  BSSMAP_IE_OMCId			oMCId optional
+} with { variant "PRESENCE (messageType = '37'O)" }
+
+
+// CLASSMARK UPDATE - 48.008 subclause 3.2.1.29
+type record PDU_BSSMAP_ClassmarkUpdate
+{
+  OCT1					messageType,  // '54'O
+  BSSMAP_IE_ClassmarkInformationType2	classmarkInformationType2,
+  BSSMAP_IE_ClassmarkInformationType3	classmarkInformationType3 optional,
+  BSSMAP_IE_TalkerPriority      talkerPriority optional
+} with { variant "PRESENCE (messageType = '54'O)" }
+
+// CIPHER MODE COMMAND - 48.008 subclause 3.2.1.30 
+type record PDU_BSSMAP_CipherModeCommand
+{
+  OCT1  				messageType, // '53'O
+  BSSMAP_IE_Layer3HeaderInfo		layer3HeaderInfo optional,
+  BSSMAP_IE_EncryptionInformation	encryptionInformation,
+  BSSMAP_IE_CipherResponseMode		cipherResponseMode optional,
+  BSSMAP_IE_KC128                       kC128 optional 
+} with { variant "PRESENCE (messageType = '53'O)" }
+
+
+// CIPHER MODE COMPLETE - 48.008 subclause 3.2.1.31 
+type record PDU_BSSMAP_CipherModeComplete
+{
+  OCT1					messageType, // '55'O
+  BSSMAP_IE_Layer3MessageContents	layer3MessageContents optional,
+  BSSMAP_IE_ChosenEncryptionAlgorithm	chosenEncryptionAlgorithm optional
+} with { variant "PRESENCE (messageType = '55'O)" }
+
+
+// COMPLETE LAYER 3 INFORMATION - 48.008 subclause 3.2.1.32
+type record PDU_BSSMAP_CompleteLayer3Information
+{
+  OCT1					messageType, // '57'O
+  BSSMAP_IE_CellIdentifier		cellIdentifier,
+  BSSMAP_IE_Layer3Information	layer3Information,
+  BSSMAP_IE_ChosenChannel		chosenChannel optional,
+  BSSMAP_IE_LSAIdentifier		lSAIdentifier optional,
+  BSSMAP_IE_APDU			aPDU optional,
+  BSSMAP_IE_SpeechCodecList             codecList optional,
+  BSSMAP_IE_RedirectAttemptFlag         redirectAttemptFlag optional,
+  BSSMAP_IE_SendSequenceNumber          sendSequenceNumber optional,
+  BSSMAP_IE_IMSI                        iMSI optional
+} with { variant "PRESENCE (messageType = '57'O)" }
+
+
+// QUEUEING INDICATION - 48.008 subclause 3.2.1.33
+type record PDU_BSSMAP_QueueingIndication
+{
+  OCT1					messageType  // H'56
+} with { variant "PRESENCE (messageType = '56'O)" }
+
+
+// SAPI "n" REJECT - 48.008 subclause 3.2.1.34
+type record PDU_BSSMAP_SAPInReject
+{
+  OCT1					messageType, // H'25
+  BSSMAP_IE_DLCI			dLCI,
+  BSSMAP_IE_Cause			cause    
+} with { variant "PRESENCE (messageType = '25'O)" }
+
+
+// HANDOVER REQUIRED REJECT - 48.008 subclause 3.2.1.37
+type record PDU_BSSMAP_HandoverRequiredReject
+{
+  OCT1					messageType,
+  BSSMAP_IE_Cause			cause,
+  BSSMAP_IE_NewBSSToOldBSSInfo		newBSSToOldBSSInfo optional,
+  BSSMAP_IE_TalkerPriority      talkerPriority optional
+} with { variant "PRESENCE (messageType = '1A'O)" }
+
+// RESET CIRCUIT - 48.008 subclause 3.2.1.38
+type record PDU_BSSMAP_ResetCircuit
+{
+  OCT1					messageType, // H'34
+  BSSMAP_IE_CircuitIdentityCode		circuitIdentityCode,
+  BSSMAP_IE_Cause			cause 
+} with { variant "PRESENCE (messageType = '34'O)" }
+
+
+// RESET CIRCUIT ACKNOWLEDGE - 48.008 subclause 3.2.1.39
+type record PDU_BSSMAP_ResetCircuitAck
+{
+  OCT1					messageType, // H'35
+  BSSMAP_IE_CircuitIdentityCode		circuitIdentityCode 
+} with { variant "PRESENCE (messageType = '35'O)" }
+
+
+// HANDOVER DETECT - 48.008 subclause 3.2.1.40
+type record PDU_BSSMAP_HandoverDetect
+{
+  OCT1					messageType,  // '1B'O
+  BSSMAP_IE_TalkerPriority      talkerPriority optional
+} with { variant "PRESENCE (messageType = '1B'O)" }
+
+
+// CIRCUIT GROUP BLOCK - 48.008 subclause 3.2.1.41 
+type record PDU_BSSMAP_CircuitGroupBlock
+{
+  OCT1					messageType, // H'44
+  BSSMAP_IE_Cause			cause,
+  BSSMAP_IE_CircuitIdentityCode		circuitIdentityCode,
+  BSSMAP_IE_CircuitIdentityCodeList	circuitIdentityCodeList   
+} with { variant "PRESENCE (messageType = '44'O)" }
+
+
+// CIRCUIT GROUP BLOCKING ACKNOWLEDGE - 48.008 subclause 3.2.1.42 
+type record PDU_BSSMAP_CircuitGroupBlockingAck
+{
+  OCT1					messageType, // H'45
+  BSSMAP_IE_CircuitIdentityCode		circuitIdentityCode,
+  BSSMAP_IE_CircuitIdentityCodeList	circuitIdentityCodeList   
+} with { variant "PRESENCE (messageType = '45'O)" }
+
+
+// CIRCUIT GROUP UNBLOCK - 48.008 subclause 3.2.1.43 
+type record PDU_BSSMAP_CircuitGroupUnblock
+{
+  OCT1					messageType, // H'46
+  BSSMAP_IE_CircuitIdentityCode		circuitIdentityCode,
+  BSSMAP_IE_CircuitIdentityCodeList	circuitIdentityCodeList   
+} with { variant "PRESENCE (messageType = '46'O)" }
+
+
+// CIRCUIT GROUP UNBLOCKING ACKNOWLEDGE - 48.008 subclause 3.2.1.44
+type record PDU_BSSMAP_CircuitGroupUnblockAck
+{
+  OCT1					messageType, // H'47
+  BSSMAP_IE_CircuitIdentityCode		circuitIdentityCode,
+  BSSMAP_IE_CircuitIdentityCodeList	circuitIdentityCodeList   
+} with { variant "PRESENCE (messageType = '47'O)" }
+
+
+// CONFUSION - 48.008 subclause 3.2.1.45
+type record PDU_BSSMAP_Confusion
+{
+  OCT1					messageType, // H'26
+  BSSMAP_IE_Cause			cause,
+  BSSMAP_IE_Diagnostics			diagnostics
+} with { variant "PRESENCE (messageType = '26'O)" }
+
+
+// CLASSMARK REQUEST - 48.008 subclause 3.2.1.46
+type record PDU_BSSMAP_ClassmarkRequest
+{
+  OCT1					messageType, // H'58
+  BSSMAP_IE_TalkerPriority      talkerPriority optional
+} with { variant "PRESENCE (messageType = '58'O)" }
+
+// UNEQUIPPED CIRCUIT - 48.008 subclause 3.2.1.47
+type record PDU_BSSMAP_UnequippedCircuit
+{
+  OCT1					messageType, // H'48
+  BSSMAP_IE_CircuitIdentityCode		circuitIdentityCode,
+  BSSMAP_IE_CircuitIdentityCodeList	circuitIdentityCodeList optional
+} with { variant "PRESENCE (messageType = '48'O)" }
+
+
+// CIPHER MODE REJECT - 48.008 subclause 3.2.1.48 
+type record PDU_BSSMAP_CipherModeReject
+{
+  OCT1					messageType, // H'59
+  BSSMAP_IE_Cause			cause   
+} with { variant "PRESENCE (messageType = '59'O)" }
+
+
+// LOAD INDICATION - 48.008 subclause 3.2.1.49
+type record PDU_BSSMAP_LoadIndication
+{
+  OCT1					messageType, // H'5A
+  BSSMAP_IE_TimeIndication		timeIndication,
+  BSSMAP_IE_CellIdentifier		cellIdentifier,
+  BSSMAP_IE_CellIdentifierList		cellIdentifierList,
+  BSSMAP_IE_ResourceSituation		resourceSitation optional,
+  BSSMAP_IE_Cause			cause  optional   
+} with { variant "PRESENCE (messageType = '5A'O)" }
+
+
+// VGCS/VBS SETUP - 48.008 subclause 3.2.1.50
+type record PDU_BSSMAP_VGCS_VBSSetup
+{
+  OCT1					messageType, // H'04
+  BSSMAP_IE_GroupCallReference		groupCallReference,
+  BSSMAP_IE_Priority			priority optional,
+  BSSMAP_IE_VGCS_FeatureFlags   vGCS_FeatureFlags optional
+} with { variant "PRESENCE (messageType = '04'O)" }
+
+// VGCS/VBS SETUP ACK - 48.008 subclause 3.2.1.51
+type record PDU_BSSMAP_VGCS_VBSSetupAck
+{
+  OCT1					messageType, // H'05
+  BSSMAP_IE_VGCS_FeatureFlags   vGCS_FeatureFlags optional
+} with { variant "PRESENCE (messageType = '05'O)" }
+
+
+// VGCS/VBS SETUP REFUSE - 48.008 subclause 3.2.1.52
+type record PDU_BSSMAP_VGCS_VBSSetupRefuse
+{
+  OCT1					messageType, // H'06
+  BSSMAP_IE_Cause			cause   
+} with { variant "PRESENCE (messageType = '06'O)" }
+
+
+// VGCS/VBS ASSIGNMENT REQUEST - 48.008 subclause 3.2.1.53
+type record PDU_BSSMAP_VGCS_VBSAssignmentRequest
+{
+  OCT1					messageType, // H'07
+  BSSMAP_IE_ChannelType			channelType,
+  BSSMAP_IE_AssignmentRequirement	assignmentRequirement,
+  BSSMAP_IE_CellIdentifier		cellIdentifier,
+  BSSMAP_IE_GroupCallReference		groupCallReference,
+  BSSMAP_IE_Priority			priority optional,
+  BSSMAP_IE_CircuitIdentityCode		circuitIdentityCode optional,
+  BSSMAP_IE_DownLinkDTXFlag		downLinkDTX_Flag optional,
+  BSSMAP_IE_EncryptionInformation	encryptionInformation optional,
+  BSSMAP_IE_VSTK_RAND           vSTK_RAND optional,
+  BSSMAP_IE_VSTK                vSTK optional,
+  BSSMAP_IE_CellIdentifierListSegment   cellIdentifierListSegment optional
+} with { variant "PRESENCE (messageType = '07'O)" }
+
+
+// VGCS/VBS ASSIGNMENT RESULT - 48.008 subclause 3.2.1.54
+type record PDU_BSSMAP_VGCS_VBSAssignmentResult
+{
+  OCT1					messageType, // H'1C
+  BSSMAP_IE_ChannelType			channelType,
+  BSSMAP_IE_CellIdentifier		cellIdentifier,
+  BSSMAP_IE_ChosenChannel		chosenChannel optional,
+  BSSMAP_IE_CircuitIdentityCode		circuitIdentityCode optional,
+  BSSMAP_IE_CircuitPool			circuitPool optional
+} with { variant "PRESENCE (messageType = '1C'O)" }
+
+
+// VGCS/VBS ASSIGNMENT FAILURE - 48.008 subclause 3.2.1.55
+type record PDU_BSSMAP_VGCS_VBSAssignmentFailure
+{
+  OCT1					messageType, // H'1D
+  BSSMAP_IE_Cause			cause,
+  BSSMAP_IE_CircuitPool			circuitPool optional,
+  BSSMAP_IE_CircuitPoolList		circuitPoolList optional
+} with { variant "PRESENCE (messageType = '1D'O)" }
+
+
+// VGCS/VBS QUEUING INDICATION - 48.008 subclause 3.2.1.56
+type record PDU_BSSMAP_VGCS_VBSQueuingIndication
+{
+  OCT1					messageType // H'1E
+} with { variant "PRESENCE (messageType = '1E'O)" }
+
+
+// UPLINK REQUEST - 48.008 subclause 3.2.1.57
+type record PDU_BSSMAP_UplinkRequest
+{
+  OCT1					messageType, // H'1F
+  BSSMAP_IE_TalkerPriority  talkerPriority optional,
+  BSSMAP_IE_CellIdentifier  cellIdentifier optional,
+  BSSMAP_IE_Layer3Information   layer3Information optional,
+  BSSMAP_IE_MobileIdentity  mobileIdentity optional
+} with { variant "PRESENCE (messageType = '1F'O)" }
+
+
+// UPLINK REQUEST ACK - 48.008 subclause 3.2.1.58
+type record PDU_BSSMAP_UplinkRequestAck
+{
+  OCT1					messageType, // H'27
+  BSSMAP_IE_TalkerPriority  talkerPriority optional,
+  BSSMAP_IE_EmergencySetIndication  emergencySetIndication optional,
+  BSSMAP_IE_TalkerIdentity  talkerIdentity optional
+} with { variant "PRESENCE (messageType = '27'O)" }
+
+
+// UPLINK REQUEST CONFIRMATION - 48.008 subclause 3.2.1.59
+type record PDU_BSSMAP_UplinkRequestConfirmation
+{
+  OCT1					messageType, // H'49
+  BSSMAP_IE_CellIdentifier		cellIdentifier,
+  BSSMAP_IE_TalkerIdentity  talkerIdentity optional,
+  BSSMAP_IE_Layer3Information	layer3Information
+} with { variant "PRESENCE (messageType = '49'O)" }
+
+
+// UPLINK APPLICATION DATA - 48.008 subclause 3.2.1.59a
+type record PDU_BSSMAP_UplinkApplicationData
+{
+  OCT1	                             messageType, 
+  BSSMAP_IE_CellIdentifier           cellIdentifier, 
+  BSSMAP_IE_Layer3Information        layer3Information,
+  BSSMAP_IE_ApplicationDataInformation  applicationDataInformation
+} with { variant "PRESENCE (messageType = '63'O)" }
+
+
+// UPLINK RELEASE INDICATION- 48.008 subclause 3.2.1.60
+type record PDU_BSSMAP_UplinkReleaseIndication
+{
+  OCT1					messageType, // H'4A
+  BSSMAP_IE_Cause			cause,
+  BSSMAP_IE_TalkerPriority  talkerPriority optional
+} with { variant "PRESENCE (messageType = '4A'O)" }
+
+
+// UPLINK REJECT COMMAND - 48.008 subclause 3.2.1.61
+type record PDU_BSSMAP_UplinkRejectCommand
+{
+  OCT1					messageType, // H'4B
+  BSSMAP_IE_Cause			cause,
+  BSSMAP_IE_TalkerPriority  currentTalkerPriority optional,
+  BSSMAP_IE_TalkerPriority  rejectedTalkerPriority optional,
+  BSSMAP_IE_TalkerIdentity  talkerIdentity optional
+} with { variant "PRESENCE (messageType = '4B'O)" }
+
+
+// UPLINK RELEASE COMMAND - 48.008 subclause 3.2.1.62
+type record PDU_BSSMAP_UplinkReleaseCommand
+{
+  OCT1					messageType, // H'4C
+  BSSMAP_IE_Cause			cause    
+} with { variant "PRESENCE (messageType = '4C'O)" }
+
+
+// UPLINK SEIZED COMMAND- 48.008 subclause 3.2.1.63
+type record PDU_BSSMAP_UplinkSeizedCommand
+{
+  OCT1					messageType, // H'4E
+  BSSMAP_IE_Cause			cause,
+  BSSMAP_IE_TalkerPriority  talkerPriority optional,
+  BSSMAP_IE_EmergencySetIndication  emergencySetIndication optional,
+  BSSMAP_IE_TalkerIdentity  talkerIdentity optional
+} with { variant "PRESENCE (messageType = '4E'O)" }
+
+
+
+// SUSPEND - 48.008 subclause 3.2.1.64
+type record PDU_BSSMAP_Suspend
+{
+  OCT1					messageType, // H'28
+  BSSMAP_IE_DLCI			dLCI
+} with { variant "PRESENCE (messageType = '28'O)" }
+
+
+// RESUME - 48.008 subclause 3.2.1.65
+type record PDU_BSSMAP_Resume
+{
+  OCT1					messageType, // H'29
+  BSSMAP_IE_DLCI			dLCI
+} with { variant "PRESENCE (messageType = '29'O)" }
+
+
+// CHANGE CIRCUIT - 48.008 subclause 3.2.1.66
+type record PDU_BSSMAP_ChangeCircuit
+{
+  OCT1					messageType, // H'4E
+  BSSMAP_IE_Cause			cause    
+} with { variant "PRESENCE (messageType = '4E'O)" }
+
+
+// CHANGE CIRCUIT ACKNOWLEDGE - 48.008 subclause 3.2.1.67
+type record PDU_BSSMAP_ChangeCircuitAck
+{
+  OCT1					messageType, // H'4F
+  BSSMAP_IE_CircuitIdentityCode		circuitIdentity   
+} with { variant "PRESENCE (messageType = '4F'O)" }
+
+
+// COMMON ID - 48.008 subclause 3.2.1.68
+type record PDU_BSSMAP_CommonID
+{
+  OCT1					messageType, // H'2F
+  BSSMAP_IE_IMSI			iMSI,
+  BSSMAP_IE_SNAAccessInfo		sNAAccessInformation optional
+} with { variant "PRESENCE (messageType = '2F'O)" }
+
+
+// LSA INFORMATION - 48.008 subclause 3.2.1.69
+type record PDU_BSSMAP_LSAInformation
+{
+  OCT1					messageType, // H'2C
+  BSSMAP_IE_LSAInformation		lSAInformation
+} with { variant "PRESENCE (messageType = '2C'O)" }
+
+
+// REFORM LOCATION REQUEST - 48.008 subclause 3.2.1.71
+type record PDU_BSSMAP_PerformLocationRequest
+{
+  OCT1					messageType, // '2B'O
+  BSSMAP_IE_LocationType		locationType,
+  BSSMAP_IE_CellIdentifier		cellIdentifier optional,
+  BSSMAP_IE_ClassmarkInformationType3	classmarkInformationType3 optional,
+  BSSMAP_IE_LCSClientType		lCS_ClientType optional,
+  BSSMAP_IE_ChosenChannel		chosenChannel optional,
+  BSSMAP_IE_LCSPriority			lCS_Priority optional,
+  BSSMAP_IE_LCSQOS			lCS_QOS optional,
+  BSSMAP_IE_GPSAssistanceData		gPS_AssistanceData optional,
+  BSSMAP_IE_APDU			aPDU optional,
+  BSSMAP_IE_IMSI                        iMSI optional,
+  BSSMAP_IE_IMEI                        iMEI optional,
+  BSSMAP_IE_GANSS_LocationType          gANSS_LocationType optional,
+  BSSMAP_IE_GANSS_AssistanceData        gANSS_AssistanceData optional
+} with { variant "PRESENCE (messageType = '2B'O)" }
+
+
+// REFORM LOCATION RESPONSE - 48.008 subclause 3.2.1.72
+type record PDU_BSSMAP_PerformLocationResponse
+{
+  OCT1					messageType, // '2D'O
+  BSSMAP_IE_LocationEstimate		locationEstimate optional,
+  BSSMAP_IE_PositioningData		positioningData optional,
+  BSSMAP_IE_DecipheringKeys		decipheringKeys optional,
+  BSSMAP_IE_LCSCause			lCS_Cause optional,
+  BSSMAP_IE_VelocityEstimate            velocityEstimate optional,
+  BSSMAP_IE_GANSS_PositioningData       gANSS_PositioningData optional
+} with { variant "PRESENCE (messageType = '2D'O)" }
+
+
+// REFORM LOCATION ABORT - 48.008 subclause 3.2.1.73
+type record PDU_BSSMAP_PerformLocationAbort
+{
+  OCT1					messageType, // '2E'O
+  BSSMAP_IE_LCSCause			lCS_Cause
+} with { variant "PRESENCE (messageType = '2E'O)" }
+
+
+// CONNECTIONLESS INFORMATION - 48.008 subclause 3.2.1.74
+type record PDU_BSSMAP_ConnectionlessInformation
+{
+  OCT1					messageType, // '3A'O
+  BSSMAP_IE_NetworkElementIdentity	networkElementIdentitySource,
+  BSSMAP_IE_NetworkElementIdentity	networkElementIdentityTarget,
+  BSSMAP_IE_APDU			aPDU,
+  BSSMAP_IE_Segmentation		segmentation optional,
+  BSSMAP_IE_ReturnErrorRequest		returnErrorRequest optional,
+  BSSMAP_IE_ReturnErrorCause		returnErrorCause optional
+} with { variant "PRESENCE (messageType = '3A'O)" }
+
+// 3.2.1.75    CHANNEL MODIFY REQUEST
+type record PDU_BSSMAP_ChannelModifyRequest
+{
+  OCT1                  messageType, // '08'O
+  BSSMAP_IE_Cause       cause
+} with { variant "PRESENCE (messageType = '08'O)" }
+
+// FIXME: these two message type codes are not specified in the standard
+/*// 3.2.1.76 EMERGENCY RESET INDICATION
+type record PDU_BSSMAP_EmergencyResetIndication
+{
+OCT1                  messageType, // 'X'O
+BSSMAP_IE_CellIdentifier        cellIdentifier optional,
+BSSMAP_IE_Layer3Information   layer3Information optional,
+BSSMAP_IE_MobileIdentity      mobileIdentity optional
+} with {variant "TAG (
+// layer3Information?}
+
+// 3.2.1.77 EMERGENCY RESET COMMAND
+type record PDU_BSSMAP_EmergencyResetCommand
+{
+OCT1                  messageType // 'X'O
+}*/
+
+// 3.2.1.78 VGCS ADDITIONAL INFORMATION
+type record PDU_BSSMAP_VGCS_AdditionalInformation
+{
+  OCT1                  messageType, // '60'O
+  BSSMAP_IE_TalkerIdentity  talkerIdentity
+} with { variant "PRESENCE (messageType = '60'O)" }
+
+
+// 3.2.1.79 VGCS/VBS AREA CELL INFO
+type record PDU_BSSMAP_VGCS_VBS_AreaCellInfo
+{
+  OCT1                  messageType, // '3C'O
+  BSSMAP_IE_CellIdentifierListSegment   cellIdentifierListSegment,
+  BSSMAP_IE_AssignmentRequirement   assignmentRequirement optional
+} with { variant "PRESENCE (messageType = '3C'O)" }
+
+
+// 3.2.1.80 VGCS/VBS ASSIGNMENT STATUS
+type record PDU_BSSMAP_VGCS_VBS_AssignmentStatus
+{
+  OCT1                  messageType, // '3B'O   
+  BSSMAP_IE_CellIdentifierListSegmentEstCells                          cellIdentifierListForEstablishedCells optional,
+  BSSMAP_IE_CellIdentifierListSegmentCellsToEst                        cellIdentifierListForCellsToEstablish optional,  
+  BSSMAP_IE_CellIdentifierListSegmentReleasedCellsNoUserPresent        cellIdentifierListSegmentReleasedCellsNoUserPresent optional,
+  BSSMAP_IE_CellIdentifierListSegmentNotEstablishedCellsNoEstPossible  cellIdentifierListSegmentNotEstablishedCellsNoEstPossible optional,
+  BSSMAP_IE_VGCS_VBS_CellStatus       vGCS_VBS_CellStatus optional
+} with { variant "PRESENCE (messageType = '3B'O)" }
+
+
+// 3.2.1.81 VGCS SMS
+type record PDU_BSSMAP_VGCS_SMS
+{
+  OCT1                      messageType, // '61'O
+  BSSMAP_IE_SMS_to_VGCS     sMS_to_VGCS
+} with { variant "PRESENCE (messageType = '61'O)" }
+
+
+// 3.2.1.82 NOTIFICATION DATA
+type record PDU_BSSMAP_NotificationData
+{
+  OCT1                      messageType, // '62'
+  BSSMAP_IE_ApplicationData applicationData,
+  BSSMAP_IE_DataIdentity    dataIdentity,
+  BSSMAP_IE_MSISDN          mSISDN optional
+} with { variant "PRESENCE (messageType = '62'O)" }
+
+
+// 3.2.1.83 INTERNAL HANDOVER REQUIRED
+type record PDU_BSSMAP_InternalHandoverRequired
+{
+  OCT1                                 messageType, // '70'
+  BSSMAP_IE_Cause                      cause,
+  BSSMAP_IE_CellIdentifier             cellIdentifier,
+  BSSMAP_IE_AoIP_TransportLayerAddress aoIPTransportLayer optional,
+  BSSMAP_IE_SpeechCodecList            codecList    
+} with { variant "PRESENCE (messageType = '70'O)" }
+
+
+// 3.2.1.84 INTERNAL HANDOVER REQUIRED REJECT
+type record PDU_BSSMAP_InternalHandoverRequiredReject
+{
+  OCT1                                 messageType, // '71' 
+  BSSMAP_IE_Cause                      cause,
+  BSSMAP_IE_SpeechCodecList            codecList optional  
+} with { variant "PRESENCE (messageType = '71'O)" }
+
+
+// 3.2.1.85 INTERNAL HANDOVER COMMAND
+type record PDU_BSSMAP_InternalHandoverCommand
+{
+  OCT1                                 messageType, // '72'
+  BSSMAP_IE_SpeechCodec                speechCodec,
+  BSSMAP_IE_CircuitIdentityCode        circuitIdentityCode optional,
+  BSSMAP_IE_AoIP_TransportLayerAddress aoIPTransportLayer optional,  
+  BSSMAP_IE_CallIdentifier             callIdentifier optional, 
+  BSSMAP_IE_DownLinkDTXFlag            downLinkDTX_Flag optional,
+  BSSMAP_IE_LCLS_ConnectionStatusControl lCLS_ConnectionStatusControl optional           
+} with { variant "PRESENCE (messageType = '72'O)" }
+
+// 3.2.1.86 INTERNAL HANDOVER ENQUIRY
+type record PDU_BSSMAP_InternalHandoverEnquiry
+{
+  OCT1                                 messageType, //'73'
+  BSSMAP_IE_SpeechCodec                speechCodec
+} with { variant "PRESENCE (messageType = '73'O)" }
+
+
+// 3.2.1.87 RESET IP RESOURCE
+type record PDU_BSSMAP_ResetIPResource
+{
+  OCT1                                 messageType, //'3D'
+  BSSMAP_IE_Cause                      cause,
+  BSSMAP_IE_CallIdentifierList         callIdentifierList    
+} with { variant "PRESENCE (messageType = '3D'O)" }
+
+
+// 3.2.1.88 RESET IP RESOURCE ACK
+type record PDU_BSSMAP_ResetIPResourceAck
+{
+  OCT1                                 messageType, //'3E'
+  BSSMAP_IE_CallIdentifierList         callIdentifierList    
+} with { variant "PRESENCE (messageType = '3E'O)" }
+
+
+// 3.2.1.89 REROUTE COMMAND
+type record PDU_BSSMAP_RerouteCommand
+{
+  OCT1                                 messageType, //'78'
+  BSSMAP_IE_Layer3Information          initialLayer3Information,                 
+  BSSMAP_IE_RerouteRejectCause         rerouteRejectCause,
+  BSSMAP_IE_Layer3Information          layer3Information optional,
+  BSSMAP_IE_SendSequenceNumber         sendSequenceNumber optional,
+  BSSMAP_IE_IMSI                       iMSI optional  
+} with { variant "PRESENCE (messageType = '78'O)" }
+
+// 3.2.1.90 REROUTE COMPLETE
+type record PDU_BSSMAP_RerouteComplete
+{
+  OCT1                                 messageType, //'79'
+  BSSMAP_IE_RerouteCompleteOutcome     rerouteCompleteOutcome  
+} with { variant "PRESENCE (messageType = '79'O)" }
+
+// 3.2.1.91 LCLS CONNECT CONTROL
+type record PDU_BSSMAP_LCLS_ConnectControl
+{
+  OCT1                                 messageType,  //'74'
+  BSSMAP_IE_LCLS_Configuration                   lCLS_Configuration optional,
+  BSSMAP_IE_LCLS_ConnectionStatusControl         lCLS_ConnectionStatusControl optional
+} with { variant "PRESENCE (messageType = '74'O)" }
+
+// 3.2.1.92 LCLS CONNECT CONTROL ACK
+type record PDU_BSSMAP_LCLS_ConnectControlAck
+{
+  OCT1                                 messageType,  //'75'
+  BSSMAP_IE_LCLS_BSS_Status                      lCLS_BSS_Status  
+} with { variant "PRESENCE (messageType = '75'O)" }
+
+// 3.2.1.93 LCLS NOTIFICATION
+type record PDU_BSSMAP_LCLS_Notification
+{
+  OCT1                                 messageType, //'76'
+  BSSMAP_IE_LCLS_BSS_Status                      lCLS_BSS_Status optional,
+  BSSMAP_IE_LCLS_BreakRequest                    lCLS_BreakRequest optional
+} with { variant "PRESENCE (messageType = '76'O)" }
+
+
+//The container type of all BSSMAP messages
+type union PDU_BSSMAP 
+{
+  PDU_BSSMAP_AssignmentRequest		assignmentRequest,
+  PDU_BSSMAP_AssignmentComplete		assignmentComplete,
+  PDU_BSSMAP_AssignmentFailure      assignmentFailure,
+  PDU_BSSMAP_ChannelModifyRequest   channelModifyRequest,
+  PDU_BSSMAP_Block			block,
+  PDU_BSSMAP_BlockingAck		blockingAck,
+  PDU_BSSMAP_BSSInvokeTrace		bSSInvokeTrace,
+  PDU_BSSMAP_ChangeCircuit		changeCircuit,
+  PDU_BSSMAP_ChangeCircuitAck		changeCircuitAck,
+  PDU_BSSMAP_CipherModeCommand		cipherModeCommand,
+  PDU_BSSMAP_CipherModeComplete		cipherModeComplete,
+  PDU_BSSMAP_CipherModeReject		cipherModeReject,
+  PDU_BSSMAP_CircuitGroupBlock		circuitGroupBlock,
+  PDU_BSSMAP_CircuitGroupBlockingAck	circuitGroupBlockingAck,
+  PDU_BSSMAP_CircuitGroupUnblock	circuitGroupUnblock,
+  PDU_BSSMAP_CircuitGroupUnblockAck	circuitGroupUnblockAck,
+  PDU_BSSMAP_ClassmarkRequest		classmarkRequest,
+  PDU_BSSMAP_ClassmarkUpdate		classmarkUpdate,
+  PDU_BSSMAP_ClearCommand		clearCommand,
+  PDU_BSSMAP_ClearComplete		clearComplete,
+  PDU_BSSMAP_ClearRequest		clearRequest,
+  PDU_BSSMAP_CommonID			commonID,
+  PDU_BSSMAP_CompleteLayer3Information	completeLayer3Information,
+  PDU_BSSMAP_Confusion			confusion,
+  PDU_BSSMAP_ConnectionlessInformation	connectionlessInformation,
+  PDU_BSSMAP_HandoverCandidateEnquire	handoverCandidateEnquire,
+  PDU_BSSMAP_HandoverCandidateResponse	handoverCandidateResponse,
+  PDU_BSSMAP_HandoverCommand		handoverCommand,
+  PDU_BSSMAP_HandoverComplete		handoverComplete,
+  PDU_BSSMAP_HandoverDetect		handoverDetect,
+  PDU_BSSMAP_HandoverFailure		handoverFailure,
+  PDU_BSSMAP_HandoverPerformed		handoverPerformed,
+  PDU_BSSMAP_HandoverRequest		handoverRequest,
+  PDU_BSSMAP_HandoverRequestAck		handoverRequestAck,
+  PDU_BSSMAP_HandoverRequired		handoverRequired,
+  PDU_BSSMAP_HandoverRequiredReject	handoverRequiredReject,
+  PDU_BSSMAP_HandoverSucceeded      handoverSucceeded,
+  PDU_BSSMAP_LoadIndication		loadIndication,
+  PDU_BSSMAP_LSAInformation		lSAInformation,
+  PDU_BSSMAP_MSCInvokeTrace		mSCInvokeTrace,
+  PDU_BSSMAP_Overload			overload,
+  PDU_BSSMAP_Paging			paging,
+  PDU_BSSMAP_PerformLocationAbort	performLocationAbort,
+  PDU_BSSMAP_PerformLocationRequest	performLocationRequest,
+  PDU_BSSMAP_PerformLocationResponse	performLocationResponse,
+  PDU_BSSMAP_QueueingIndication		queueingIndication,
+  PDU_BSSMAP_Reset			reset,
+  PDU_BSSMAP_ResetAck			resetAck,
+  PDU_BSSMAP_ResetCircuit		resetCircuit,
+  PDU_BSSMAP_ResetCircuitAck		resetCircuitAck,
+  PDU_BSSMAP_ResourceIndication		resourceIndication,
+  PDU_BSSMAP_ResourceRequest		resourceRequest,
+  PDU_BSSMAP_SAPInReject		sAPInReject,
+  PDU_BSSMAP_Suspend			suspend,
+  PDU_BSSMAP_Resume			resume,
+  PDU_BSSMAP_Unblock			unblock,
+  PDU_BSSMAP_UnblockAck			unblockAck,
+  PDU_BSSMAP_UnequippedCircuit		unequippedCircuit,
+  PDU_BSSMAP_UplinkRequest		uplinkRequest,
+  PDU_BSSMAP_UplinkRequestAck		uplinkRequestAck,
+  PDU_BSSMAP_UplinkRequestConfirmation	uplinkRequestConfirmation,
+  PDU_BSSMAP_UplinkReleaseIndication	uplinkReleaseIndication,
+  PDU_BSSMAP_UplinkRejectCommand	uplinkRejectCommand,
+  PDU_BSSMAP_UplinkReleaseCommand	uplinkReleaseCommand,
+  PDU_BSSMAP_UplinkSeizedCommand	uplinkSeizedCommand,
+  PDU_BSSMAP_VGCS_VBSSetup		vGCS_VBSSetup,
+  PDU_BSSMAP_VGCS_VBSSetupAck		vGCS_VBSSetupAck,
+  PDU_BSSMAP_VGCS_VBSSetupRefuse	vGCS_VBSSetupRefuse,
+  PDU_BSSMAP_VGCS_VBSAssignmentRequest	vGCS_VBSAssignmentRequest,
+  PDU_BSSMAP_VGCS_VBSAssignmentResult	vGCS_VBSAssignmentResult,
+  PDU_BSSMAP_VGCS_VBSAssignmentFailure	vGCS_VBSAssignmentFailure,
+  PDU_BSSMAP_VGCS_VBSQueuingIndication	vGCS_VBSQueuingIndication,
+  // FIXME: these 2 message type codes are not specified in the standard
+  //  PDU_BSSMAP_EmergencyResetIndication   emergencyResetIndication,
+  //  PDU_BSSMAP_EmergencyResetCommand      emergencyResetCommand,
+  PDU_BSSMAP_VGCS_AdditionalInformation vGCS_AdditionalInformation,
+  PDU_BSSMAP_VGCS_VBS_AreaCellInfo      vGCS_VBS_AreaCellInfo,
+  PDU_BSSMAP_VGCS_VBS_AssignmentStatus  vGCS_VBS_AssignmentStatus,
+  PDU_BSSMAP_VGCS_SMS                   vGCS_SMS,
+  PDU_BSSMAP_UplinkApplicationData      uplinkApplicationData,
+  PDU_BSSMAP_NotificationData           notificationData,
+  PDU_BSSMAP_InternalHandoverRequired   internalHandoverRequired,
+  PDU_BSSMAP_InternalHandoverRequiredReject   internalHandoverRequiredReject,
+  PDU_BSSMAP_InternalHandoverCommand    internalHandoverCommand,
+  PDU_BSSMAP_InternalHandoverEnquiry    internalHandoverEnquiry,
+  PDU_BSSMAP_ResetIPResource            resetIPResource,
+  PDU_BSSMAP_ResetIPResourceAck         resetIPResourceAck,
+  PDU_BSSMAP_RerouteCommand             rerouteCommand,
+  PDU_BSSMAP_RerouteComplete            rerouteComplete,
+  PDU_BSSMAP_LCLS_ConnectControl        lCLS_ConnectControl,
+  PDU_BSSMAP_LCLS_ConnectControlAck     lCLS_connectControlAck,
+  PDU_BSSMAP_LCLS_Notification          lCLS_Notification
+}
+
+
+
+///////////////////////////////////////////
+//   BSSAP message definition
+///////////////////////////////////////////
+
+type union BSSMAPorDTAP
+{
+  PDU_BSSMAP		bssmap,
+  octetstring  		dtap
+}
+
+
+type record PDU_BSSAP
+{
+  BIT1			discriminator, // 0= BSSMAP ; 1 = DTAP
+  BIT7			spare, // always '0000000'B
+  OCT1			dlci optional,
+  LIN1			lengthIndicator,
+  BSSMAPorDTAP   pdu
+} with {variant (lengthIndicator)"LENGTHTO (pdu)";
+  variant (pdu)"CROSSTAG( bssmap,  discriminator='0'B;
+  dtap,    discriminator='1'B)";
+  variant (dlci)"PRESENCE(discriminator='1'B)"}
+
+
+} with { encode "RAW"} // End of module BSSMAP_typedefs 
diff --git a/src/BSSMAP_V11.2.0.grp b/src/BSSMAP_V11.2.0.grp
new file mode 100644
index 0000000..863ecb6
--- /dev/null
+++ b/src/BSSMAP_V11.2.0.grp
@@ -0,0 +1,26 @@
+<!--
+///////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2000-2017 Ericsson Telecom AB
+//
+// All rights reserved. This program and the accompanying materials
+// are made available under the terms of the Eclipse Public License v1.0
+// which accompanies this distribution, and is available at
+// http://www.eclipse.org/legal/epl-v10.html
+///////////////////////////////////////////////////////////////////////////////
+//
+//  File:               BSSMAP_V11.2.0.grp
+//  Description:        BSSMAP_V11.2.0 Protocol Module group file
+//  Rev:                R2A
+//  Prodnr:             CNL 113 761
+//  Updated:            2012-11-06
+//  Contact:            http://ttcn.ericsson.se
+//
+-->
+
+<!DOCTYPE TITAN_GUI_FileGroup_file>
+<FileGroup TITAN_version="1.10.pl0" >
+    <File_Group name="BSSMAP_V11.2.0" >
+        <File path="BSSAP_Types.ttcn" />
+    </File_Group>
+</FileGroup>
