From 86923fbf9e91d707037b05017c82275fc6ab85af Mon Sep 17 00:00:00 2001
From: Martin Mathieson <martin.r.mathieson@gmail.com>
Date: Sun, 1 Dec 2024 22:59:39 +0000
Subject: [PATCH 1/3] IDMP: Avoid returning twice from some generated functions

(cherry picked from commit 10e9024c12ba35fcd213f8b8aa6d68ef9dd802c2)
---
 epan/dissectors/asn1/idmp/idmp.cnf | 33 +++++++++++++-----------------
 epan/dissectors/packet-idmp.c      | 33 +++++++++++++-----------------
 2 files changed, 28 insertions(+), 38 deletions(-)

Index: wireshark-3.6.24/epan/dissectors/asn1/idmp/idmp.cnf
===================================================================
--- wireshark-3.6.24.orig/epan/dissectors/asn1/idmp/idmp.cnf
+++ wireshark-3.6.24/epan/dissectors/asn1/idmp/idmp.cnf
@@ -27,28 +27,26 @@ IdmResult/invokeID	idm_invokeID
 IdmResult/invokeID ABBREV=idmResult.invokeID
 
 #.FN_BODY	IdmBind/argument
-	struct SESSION_DATA_STRUCTURE *session = (struct SESSION_DATA_STRUCTURE*)actx->private_data;
-
-	return call_idmp_oid_callback(tvb, offset, actx->pinfo, (ROS_OP_BIND | ROS_OP_ARGUMENT), top_tree, session);
+  struct SESSION_DATA_STRUCTURE *session = (struct SESSION_DATA_STRUCTURE*)actx->private_data;
+  offset = call_idmp_oid_callback(tvb, offset, actx->pinfo, (ROS_OP_BIND | ROS_OP_ARGUMENT), top_tree, session);
 
 #.END
 
 #.FN_PARS	OBJECT_IDENTIFIER	FN_VARIANT = _str VAL_PTR = &protocolID
 
 #.FN_HDR	IdmBind
-	protocolID = saved_protocolID = NULL;
+  protocolID = saved_protocolID = NULL;
 #.END
 
 #.FN_FTR	IdmBind
-	if (protocolID) {
-		saved_protocolID = wmem_strdup(wmem_epan_scope(), protocolID);
-	}
+  if (protocolID) {
+    saved_protocolID = wmem_strdup(wmem_epan_scope(), protocolID);
+  }
 #.END
 
 #.FN_BODY	IdmBindResult/result
-	struct SESSION_DATA_STRUCTURE *session = (struct SESSION_DATA_STRUCTURE*)actx->private_data;
-
-	return call_idmp_oid_callback(tvb, offset, actx->pinfo, (ROS_OP_BIND | ROS_OP_RESULT), top_tree, session);
+  struct SESSION_DATA_STRUCTURE *session = (struct SESSION_DATA_STRUCTURE*)actx->private_data;
+  offset = call_idmp_oid_callback(tvb, offset, actx->pinfo, (ROS_OP_BIND | ROS_OP_RESULT), top_tree, session);
 
 #.END
 
@@ -57,25 +55,22 @@ IdmResult/invokeID ABBREV=idmResult.invo
 #.END
 
 #.FN_BODY	IdmBindError/error
-	struct SESSION_DATA_STRUCTURE *session = (struct SESSION_DATA_STRUCTURE*)actx->private_data;
-
-	return call_idmp_oid_callback(tvb, offset, actx->pinfo, (ROS_OP_BIND| ROS_OP_ERROR), top_tree, session);
+  struct SESSION_DATA_STRUCTURE *session = (struct SESSION_DATA_STRUCTURE*)actx->private_data;
+  offset = call_idmp_oid_callback(tvb, offset, actx->pinfo, (ROS_OP_BIND| ROS_OP_ERROR), top_tree, session);
 
 #.END
 
 #.FN_PARS Code/local VAL_PTR = &opcode
 
 #.FN_BODY	Request/argument
-	struct SESSION_DATA_STRUCTURE *session = (struct SESSION_DATA_STRUCTURE*)actx->private_data;
-
-	return call_idmp_oid_callback(tvb, offset, actx->pinfo, (ROS_OP_INVOKE | ROS_OP_ARGUMENT | opcode), top_tree, session);
+  struct SESSION_DATA_STRUCTURE *session = (struct SESSION_DATA_STRUCTURE*)actx->private_data;
+  offset = call_idmp_oid_callback(tvb, offset, actx->pinfo, (ROS_OP_INVOKE | ROS_OP_ARGUMENT | opcode), top_tree, session);
 
 #.END
 
 #.FN_BODY	IdmResult/result
-	struct SESSION_DATA_STRUCTURE *session = (struct SESSION_DATA_STRUCTURE*)actx->private_data;
-
-	return call_idmp_oid_callback(tvb, offset, actx->pinfo, (ROS_OP_INVOKE | ROS_OP_RESULT | opcode), top_tree, session);
+  struct SESSION_DATA_STRUCTURE *session = (struct SESSION_DATA_STRUCTURE*)actx->private_data;
+  offset = call_idmp_oid_callback(tvb, offset, actx->pinfo, (ROS_OP_INVOKE | ROS_OP_RESULT | opcode), top_tree, session);
 
 #.END
 
Index: wireshark-3.6.24/epan/dissectors/packet-idmp.c
===================================================================
--- wireshark-3.6.24.orig/epan/dissectors/packet-idmp.c
+++ wireshark-3.6.24/epan/dissectors/packet-idmp.c
@@ -180,6 +180,21 @@ static gint ett_idmp_InvokeId = -1;
 /*--- End of included file: packet-idmp-ett.c ---*/
 #line 122 "./asn1/idmp/packet-idmp-template.c"
 
+/*--- Cyclic dependencies ---*/
+
+/* IdmBind/argument -> IdmBind/argument */
+static int dissect_idmp_Bind_argument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* IdmBindResult/result -> IdmBindResult/result */
+static int dissect_idmp_Bind_result(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* Request/argument -> Request/argument */
+static int dissect_idmp_T_argument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* IdmResult/result -> IdmResult/result */
+static int dissect_idmp_T_result(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+
 
 /*--- Included file: packet-idmp-fn.c ---*/
 #line 1 "./asn1/idmp/packet-idmp-fn.c"
@@ -196,11 +211,12 @@ dissect_idmp_OBJECT_IDENTIFIER(gboolean
 
 static int
 dissect_idmp_Bind_argument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-	struct SESSION_DATA_STRUCTURE *session = (struct SESSION_DATA_STRUCTURE*)actx->private_data;
-
-	return call_idmp_oid_callback(tvb, offset, actx->pinfo, (ROS_OP_BIND | ROS_OP_ARGUMENT), top_tree, session);
-
-
+  // IdmBind/argument -> IdmBind/argument
+  increment_dissection_depth(actx->pinfo);
+  struct SESSION_DATA_STRUCTURE *session = (struct SESSION_DATA_STRUCTURE*)actx->private_data;
+  offset = call_idmp_oid_callback(tvb, offset, actx->pinfo, (ROS_OP_BIND | ROS_OP_ARGUMENT), top_tree, session);
+ 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -215,13 +231,13 @@ static const ber_sequence_t IdmBind_sequ
 
 static int
 dissect_idmp_IdmBind(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-	protocolID = saved_protocolID = NULL;
+  protocolID = saved_protocolID = NULL;
   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                    IdmBind_sequence, hf_index, ett_idmp_IdmBind);
 
-	if (protocolID) {
-		saved_protocolID = wmem_strdup(wmem_epan_scope(), protocolID);
-	}
+  if (protocolID) {
+    saved_protocolID = wmem_strdup(wmem_epan_scope(), protocolID);
+  }
   return offset;
 }
 
@@ -229,11 +245,12 @@ dissect_idmp_IdmBind(gboolean implicit_t
 
 static int
 dissect_idmp_Bind_result(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-	struct SESSION_DATA_STRUCTURE *session = (struct SESSION_DATA_STRUCTURE*)actx->private_data;
-
-	return call_idmp_oid_callback(tvb, offset, actx->pinfo, (ROS_OP_BIND | ROS_OP_RESULT), top_tree, session);
-
-
+  // IdmBindResult/result -> IdmBindResult/result
+  increment_dissection_depth(actx->pinfo);
+  struct SESSION_DATA_STRUCTURE *session = (struct SESSION_DATA_STRUCTURE*)actx->private_data;
+  offset = call_idmp_oid_callback(tvb, offset, actx->pinfo, (ROS_OP_BIND | ROS_OP_RESULT), top_tree, session);
+ 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -282,10 +299,8 @@ dissect_idmp_T_aETitleError(gboolean imp
 
 static int
 dissect_idmp_Bind_error(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-	struct SESSION_DATA_STRUCTURE *session = (struct SESSION_DATA_STRUCTURE*)actx->private_data;
-
-	return call_idmp_oid_callback(tvb, offset, actx->pinfo, (ROS_OP_BIND| ROS_OP_ERROR), top_tree, session);
-
+  struct SESSION_DATA_STRUCTURE *session = (struct SESSION_DATA_STRUCTURE*)actx->private_data;
+  offset = call_idmp_oid_callback(tvb, offset, actx->pinfo, (ROS_OP_BIND| ROS_OP_ERROR), top_tree, session);
 
   return offset;
 }
@@ -354,11 +369,12 @@ dissect_idmp_Code(gboolean implicit_tag
 
 static int
 dissect_idmp_T_argument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-	struct SESSION_DATA_STRUCTURE *session = (struct SESSION_DATA_STRUCTURE*)actx->private_data;
-
-	return call_idmp_oid_callback(tvb, offset, actx->pinfo, (ROS_OP_INVOKE | ROS_OP_ARGUMENT | opcode), top_tree, session);
-
-
+  // Request/argument -> Request/argument
+  increment_dissection_depth(actx->pinfo);
+  struct SESSION_DATA_STRUCTURE *session = (struct SESSION_DATA_STRUCTURE*)actx->private_data;
+  offset = call_idmp_oid_callback(tvb, offset, actx->pinfo, (ROS_OP_INVOKE | ROS_OP_ARGUMENT | opcode), top_tree, session);
+ 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -402,10 +418,13 @@ static const ber_choice_t InvokeId_choic
 
 static int
 dissect_idmp_InvokeId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // IdmResult/result -> IdmResult/result
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_ber_choice(actx, tree, tvb, offset,
                                  InvokeId_choice, hf_index, ett_idmp_InvokeId,
                                  NULL);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -413,11 +432,12 @@ dissect_idmp_InvokeId(gboolean implicit_
 
 static int
 dissect_idmp_T_result(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-	struct SESSION_DATA_STRUCTURE *session = (struct SESSION_DATA_STRUCTURE*)actx->private_data;
-
-	return call_idmp_oid_callback(tvb, offset, actx->pinfo, (ROS_OP_INVOKE | ROS_OP_RESULT | opcode), top_tree, session);
-
-
+  // IdmResult/result -> IdmResult/result
+  increment_dissection_depth(actx->pinfo);
+  struct SESSION_DATA_STRUCTURE *session = (struct SESSION_DATA_STRUCTURE*)actx->private_data;
+  offset = call_idmp_oid_callback(tvb, offset, actx->pinfo, (ROS_OP_INVOKE | ROS_OP_RESULT | opcode), top_tree, session);
+ 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
Index: wireshark-3.6.24/epan/dissectors/asn1/charging_ase/charging_ase.cnf
===================================================================
--- wireshark-3.6.24.orig/epan/dissectors/asn1/charging_ase/charging_ase.cnf
+++ wireshark-3.6.24/epan/dissectors/asn1/charging_ase/charging_ase.cnf
@@ -12,5 +12,5 @@ ChargingMessageType
 #.FN_BODY ExtensionField/value
 
 	proto_tree_add_expert(tree, actx->pinfo, &ei_charging_ase_extensions_not_dissected, tvb, offset, -1);
-	return tvb_reported_length(tvb);
+	offset = tvb_reported_length(tvb);
 #.END
Index: wireshark-3.6.24/epan/dissectors/packet-charging_ase.c
===================================================================
--- wireshark-3.6.24.orig/epan/dissectors/packet-charging_ase.c
+++ wireshark-3.6.24/epan/dissectors/packet-charging_ase.c
@@ -147,6 +147,12 @@ static expert_field ei_charging_ase_exte
 
 static dissector_handle_t charging_ase_handle;
 
+/*--- Cyclic dependencies ---*/
+
+/* ExtensionField/value -> ExtensionField/value */
+static int dissect_charging_ase_T_value(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+
 
 /*--- Included file: packet-charging_ase-fn.c ---*/
 #line 1 "./asn1/charging_ase/packet-charging_ase-fn.c"
@@ -524,10 +530,12 @@ static int
 dissect_charging_ase_T_value(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
 #line 13 "./asn1/charging_ase/charging_ase.cnf"
 
+  // ExtensionField/value -> ExtensionField/value
+  increment_dissection_depth(actx->pinfo);
 	proto_tree_add_expert(tree, actx->pinfo, &ei_charging_ase_extensions_not_dissected, tvb, offset, -1);
-	return tvb_reported_length(tvb);
-
+	offset = tvb_reported_length(tvb);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
Index: wireshark-3.6.24/epan/dissectors/asn1/atn-ulcs/packet-atn-ulcs-template.c
===================================================================
--- wireshark-3.6.24.orig/epan/dissectors/asn1/atn-ulcs/packet-atn-ulcs-template.c
+++ wireshark-3.6.24/epan/dissectors/asn1/atn-ulcs/packet-atn-ulcs-template.c
@@ -132,14 +132,6 @@ static wmem_tree_t *atn_conversation_tre
 static proto_tree *root_tree = NULL;
 
 /* forward declarations for functions generated from asn1 */
-static int dissect_atn_ulcs_T_externalt_encoding_single_asn1_type(
-    tvbuff_t *tvb _U_,
-    int offset _U_,
-    asn1_ctx_t *actx _U_,
-    proto_tree *tree _U_,
-    int hf_index
-    _U_);
-
 static int dissect_atn_ulcs_T_externalt_encoding_octet_aligned(
     tvbuff_t *tvb _U_,
     int offset _U_,
Index: wireshark-3.6.24/epan/dissectors/packet-ain.c
===================================================================
--- wireshark-3.6.24.orig/epan/dissectors/packet-ain.c
+++ wireshark-3.6.24/epan/dissectors/packet-ain.c
@@ -8253,9 +8253,11 @@ static int
 dissect_ain_T_argument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
 #line 169 "./asn1/ain/ain.cnf"
 
+  // Invoke/argument -> Invoke/argument
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_invokeData(tree, tvb, offset, actx);
 
-
+  decrement_dissection_depth(actx->pinfo);
 
   return offset;
 }
@@ -8275,9 +8277,11 @@ dissect_ain_Invoke(gboolean implicit_tag
 
   ain_opcode_type=AIN_OPCODE_INVOKE;
 
-
+  // ReturnResult/result/result -> ReturnResult/result/result
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                    Invoke_sequence, hf_index, ett_ain_Invoke);
+  decrement_dissection_depth(actx->pinfo);
 
   return offset;
 }
@@ -8323,9 +8327,11 @@ dissect_ain_ReturnResult(gboolean implic
 
   ain_opcode_type=AIN_OPCODE_RETURN_RESULT;
 
-
+  // ReturnError/parameter -> ReturnError/parameter
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                    ReturnResult_sequence, hf_index, ett_ain_ReturnResult);
+  decrement_dissection_depth(actx->pinfo);
 
   return offset;
 }
@@ -11586,5 +11592,17 @@ void proto_register_ain(void) {
 */
 
 
+/*--- Cyclic dependencies ---*/
+
+/* Invoke/argument -> Invoke/argument */
+static int dissect_ain_T_argument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* ReturnResult/result/result -> ReturnResult/result/result */
+static int dissect_ain_T_result_01(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* ReturnError/parameter -> ReturnError/parameter */
+static int dissect_ain_T_parameter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+
 
 
Index: wireshark-3.6.24/epan/dissectors/packet-ansi_tcap.c
===================================================================
--- wireshark-3.6.24.orig/epan/dissectors/packet-ansi_tcap.c
+++ wireshark-3.6.24/epan/dissectors/packet-ansi_tcap.c
@@ -472,6 +472,15 @@ dissect_ansi_tcap_T_national(gboolean im
   return offset;
 }
 
+/*--- Cyclic dependencies ---*/
+
+/* ReturnResult/parameter -> ReturnResult/parameter */
+static int dissect_ansi_tcap_T_returnResult_parameter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* ReturnError/parameter -> ReturnError/parameter */
+static int dissect_ansi_tcap_T_returnError_parameter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+
 
 
 static int
@@ -848,13 +857,14 @@ dissect_ansi_tcap_T_componentIDs(gboolea
 static int
 dissect_ansi_tcap_T_invoke_parameter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
 #line 96 "./asn1/ansi_tcap/ansi_tcap.cnf"
-
+  // ReturnResult/parameter -> ReturnResult/parameter
+  increment_dissection_depth(actx->pinfo);
   if(find_tcap_subdissector(tvb, actx, tree))
     offset = tvb_reported_length(tvb);
 
 
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -894,11 +904,13 @@ dissect_ansi_tcap_T_componentID(gboolean
 static int
 dissect_ansi_tcap_T_returnResult_parameter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
 #line 109 "./asn1/ansi_tcap/ansi_tcap.cnf"
+  // ReturnError/parameter -> ReturnError/parameter
+  increment_dissection_depth(actx->pinfo);
   if(find_tcap_subdissector(tvb, actx, tree))
     offset = tvb_reported_length(tvb);
 
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -938,11 +950,13 @@ dissect_ansi_tcap_T_componentID_01(gbool
 static int
 dissect_ansi_tcap_T_returnError_parameter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
 #line 119 "./asn1/ansi_tcap/ansi_tcap.cnf"
+  // ReturnError/parameter -> ReturnError/parameter
+  increment_dissection_depth(actx->pinfo);
   if(find_tcap_subdissector(tvb, actx, tree))
     offset = tvb_reported_length(tvb);
 
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
Index: wireshark-3.6.24/epan/dissectors/packet-atn-ulcs.c
===================================================================
--- wireshark-3.6.24.orig/epan/dissectors/packet-atn-ulcs.c
+++ wireshark-3.6.24/epan/dissectors/packet-atn-ulcs.c
@@ -140,14 +140,6 @@ static wmem_tree_t *atn_conversation_tre
 static proto_tree *root_tree = NULL;
 
 /* forward declarations for functions generated from asn1 */
-static int dissect_atn_ulcs_T_externalt_encoding_single_asn1_type(
-    tvbuff_t *tvb _U_,
-    int offset _U_,
-    asn1_ctx_t *actx _U_,
-    proto_tree *tree _U_,
-    int hf_index
-    _U_);
-
 static int dissect_atn_ulcs_T_externalt_encoding_octet_aligned(
     tvbuff_t *tvb _U_,
     int offset _U_,
@@ -296,6 +288,15 @@ static gint ett_atn_ulcs_AttributeTypeAn
 static gint ett_atn_ulcs = -1;
 static gint ett_atn_acse = -1;
 
+/*--- Cyclic dependencies ---*/
+
+/* PDV-list/presentation-data-values/single-ASN1-type -> PDV-list/presentation-data-values/single-ASN1-type */
+static int dissect_atn_ulcs_T_pdv_list_presentation_data_values_single_asn1_type(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* EXTERNALt/encoding/single-ASN1-type -> EXTERNALt/encoding/single-ASN1-type */
+static int dissect_atn_ulcs_T_externalt_encoding_single_asn1_type(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+
 
 /*--- Included file: packet-atn-ulcs-fn.c ---*/
 #line 1 "./asn1/atn-ulcs/packet-atn-ulcs-fn.c"
@@ -339,8 +340,11 @@ dissect_atn_ulcs_Presentation_context_id
 
 static int
 dissect_atn_ulcs_T_pdv_list_presentation_data_values_single_asn1_type(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // PDV-list/presentation-data-values/single-ASN1-type -> PDV-list/presentation-data-values/single-ASN1-type
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type(tvb, offset, actx, tree, hf_index, NULL);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -547,11 +551,14 @@ dissect_atn_ulcs_T_data_value_descriptor
 
 static int
 dissect_atn_ulcs_T_externalt_encoding_single_asn1_type(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // EXTERNALt/encoding/single-ASN1-type -> EXTERNALt/encoding/single-ASN1-type
+  increment_dissection_depth(actx->pinfo);
 
     offset = dissect_per_open_type(tvb, offset, actx, tree, hf_index, NULL);
 
 
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
Index: wireshark-3.6.24/epan/dissectors/packet-camel.c
===================================================================
--- wireshark-3.6.24.orig/epan/dissectors/packet-camel.c
+++ wireshark-3.6.24/epan/dissectors/packet-camel.c
@@ -1336,6 +1336,21 @@ camelstat_packet(void *pcamel, packet_in
   return TAP_PACKET_REDRAW;
 }
 
+/*--- Cyclic dependencies ---*/
+
+/* ExtensionField/value -> ExtensionField/value */
+static int dissect_camel_T_value(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* Invoke/argument -> Invoke/argument */
+static int dissect_camel_T_argument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* ReturnResult/result/result -> ReturnResult/result/result */
+static int dissect_camel_ResultArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* ReturnError/parameter -> ReturnError/parameter */
+static int dissect_camel_T_parameter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+
 
 static char camel_number_to_char(int number)
 {
@@ -2326,6 +2341,7 @@ dissect_camel_INTEGER_1_864000(gboolean
 
 static int
 dissect_camel_T_audibleIndicator(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  increment_dissection_depth(actx->pinfo);
   if (tvb_reported_length_remaining(tvb,offset) < 2)
 	offset = dissect_camel_BOOLEAN(TRUE, tvb, offset, actx , tree, hf_camel_audibleIndicatorTone);
   else
@@ -2333,6 +2349,7 @@ dissect_camel_T_audibleIndicator(gboolea
 
 
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -2404,12 +2421,14 @@ dissect_camel_Code(gboolean implicit_tag
 static int
 dissect_camel_T_value(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
   /*XXX handle local form here */
+  // ExtensionField/value -> ExtensionField/value
+  increment_dissection_depth(actx->pinfo);
   if(camel_obj_id){
     offset=call_ber_oid_callback(camel_obj_id, tvb, offset, actx->pinfo, tree, NULL);
   }
   is_ExtensionField = FALSE;
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -6590,9 +6609,11 @@ dissect_camel_T_linkedId(gboolean implic
 
 static int
 dissect_camel_T_argument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-	offset = dissect_invokeData(tree, tvb, offset, actx);
-
+  // Invoke/argument -> Invoke/argument
+  increment_dissection_depth(actx->pinfo);
+  offset = dissect_invokeData(tree, tvb, offset, actx);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -6619,8 +6640,11 @@ dissect_camel_Invoke(gboolean implicit_t
 
 static int
 dissect_camel_ResultArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-	offset = dissect_returnResultData(tree, tvb, offset, actx);
+  // ReturnResult/result/result -> ReturnResult/result/result
+  increment_dissection_depth(actx->pinfo);
+  offset = dissect_returnResultData(tree, tvb, offset, actx);
 
+  decrement_dissection_depth(actx->pinfo);
 
   return offset;
 }
@@ -6661,8 +6685,10 @@ dissect_camel_ReturnResult(gboolean impl
 
 static int
 dissect_camel_T_parameter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-	offset = dissect_returnErrorData(tree, tvb, offset, actx);
-
+  // ReturnError/parameter -> ReturnError/parameter
+  increment_dissection_depth(actx->pinfo);
+  offset = dissect_returnErrorData(tree, tvb, offset, actx);
+  decrement_dissection_depth(actx->pinfo);
 
 
   return offset;
Index: wireshark-3.6.24/epan/dissectors/packet-cmip.c
===================================================================
--- wireshark-3.6.24.orig/epan/dissectors/packet-cmip.c
+++ wireshark-3.6.24/epan/dissectors/packet-cmip.c
@@ -627,10 +627,64 @@ static const char *object_identifier_id;
 #line 1 "./asn1/cmip/packet-cmip-fn.c"
 /*--- Cyclic dependencies ---*/
 
+/* AttributeValueAssertion/value -> AttributeValueAssertion/value */
+static int dissect_cmip_T_attributeValueAssertionvalue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* Attribute/value -> Attribute/value */
+static int dissect_cmip_AttributeValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+
 /* CMISFilter -> CMISFilter/and -> CMISFilter */
 /* CMISFilter -> CMISFilter */
 static int dissect_cmip_CMISFilter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
 
+/* ActionInfo/actionInfoArg -> ActionInfo/actionInfoArg */
+static int dissect_cmip_T_actionInfoArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* InvalidArgumentValue/eventValue/eventInfo -> InvalidArgumentValue/eventValue/eventInfo */
+static int dissect_cmip_T_eventInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* ActionReply/actionReplyInfo -> ActionReply/actionReplyInfo */
+static int dissect_cmip_T_actionReplyInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* AttributeError/attributeValue -> AttributeError/attributeValue */
+static int dissect_cmip_T_attributeValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* EventReply/eventReplyInfo -> EventReply/eventReplyInfo */
+static int dissect_cmip_T_eventReplyInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* EventReportArgument/eventInfo -> EventReportArgument/eventInfo */
+static int dissect_cmip_EventReportArgumentEventInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* SpecificErrorInfo/errorInfo -> SpecificErrorInfo/errorInfo */
+static int dissect_cmip_T_errorInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* SetArgument/modificationList/_item/attributeValue -> SetArgument/modificationList/_item/attributeValue */
+static int dissect_cmip_T_attributevalue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* ManagementExtension/information -> ManagementExtension/information */
+static int dissect_cmip_T_information(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* AttributeValueChangeDefinition/_item/oldAttributeValue -> AttributeValueChangeDefinition/_item/oldAttributeValue */
+static int dissect_cmip_T_oldAttributeValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* AttributeValueChangeDefinition/_item/newAttributeValue -> AttributeValueChangeDefinition/_item/newAttributeValue */
+static int dissect_cmip_T_newAttributeValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* ServiceUser/details -> ServiceUser/details */
+static int dissect_cmip_T_details(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* SupportedFeatures/_item/featureInfo -> SupportedFeatures/_item/featureInfo */
+static int dissect_cmip_T_featureInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* Invoke/argument -> Invoke/argument */
+static int dissect_cmip_InvokeArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* ReturnResult/result/result -> ReturnResult/result/result */
+static int dissect_cmip_ResultArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* ReturnError/parameter -> ReturnError/parameter */
+static int dissect_cmip_T_parameter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
 
 
 
@@ -750,6 +804,7 @@ dissect_cmip_ObjectClass(gboolean implic
 
 static int
 dissect_cmip_T_id(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  
   offset = dissect_ber_object_identifier_str(implicit_tag, actx, tree, tvb, offset, hf_index, &actx->external.direct_reference);
 
 #line 288 "./asn1/cmip/cmip.cnf"
@@ -763,11 +818,14 @@ dissect_cmip_T_id(gboolean implicit_tag
 
 static int
 dissect_cmip_T_attributeValueAssertionvalue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // AttributeValueAssertion/value -> AttributeValueAssertion/value
+  increment_dissection_depth(actx->pinfo);
 #line 291 "./asn1/cmip/cmip.cnf"
   if (actx->external.direct_ref_present) {
     offset=call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, actx->private_data);
   }
 
+  decrement_dissection_depth(actx->pinfo);
 
 
   return offset;
@@ -918,6 +976,8 @@ dissect_cmip_Scope(gboolean implicit_tag
 
 static int
 dissect_cmip_AttributeValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // Attribute/value -> Attribute/value
+  increment_dissection_depth(actx->pinfo);
 #line 275 "./asn1/cmip/cmip.cnf"
   if(actx->external.direct_ref_present){
     offset=call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, actx->private_data);
@@ -929,7 +989,7 @@ dissect_cmip_AttributeValue(gboolean imp
   }
 
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -1098,11 +1158,13 @@ dissect_cmip_ActionTypeId(gboolean impli
 
 static int
 dissect_cmip_T_actionInfoArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 443 "./asn1/cmip/cmip.cnf"
+  // ActionInfo/actionInfoArg -> ActionInfo/actionInfoArg
+  increment_dissection_depth(actx->pinfo);
+  #line 443 "./asn1/cmip/cmip.cnf"
   offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree, actx->private_data);
 
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -1255,11 +1317,13 @@ dissect_cmip_NoSuchArgument(gboolean imp
 
 static int
 dissect_cmip_T_eventInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // InvalidArgumentValue/eventValue/eventInfo -> InvalidArgumentValue/eventValue/eventInfo
+  increment_dissection_depth(actx->pinfo);
 #line 474 "./asn1/cmip/cmip.cnf"
   offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree, actx->private_data);
 
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -1360,12 +1424,14 @@ dissect_cmip_ActionError(gboolean implic
 
 static int
 dissect_cmip_T_actionReplyInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 477 "./asn1/cmip/cmip.cnf"
+  // ActionReply/actionReplyInfo -> ActionReply/actionReplyInfo
+  increment_dissection_depth(actx->pinfo);
+  #line 477 "./asn1/cmip/cmip.cnf"
   offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree, actx->private_data);
 
 
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -1442,10 +1508,13 @@ dissect_cmip_ModifyOperator(gboolean imp
 
 static int
 dissect_cmip_T_attributeValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 471 "./asn1/cmip/cmip.cnf"
+  // AttributeError/attributeValue -> AttributeError/attributeValue
+  increment_dissection_depth(actx->pinfo);
+  #line 471 "./asn1/cmip/cmip.cnf"
   offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree, actx->private_data);
 
 
+  decrement_dissection_depth(actx->pinfo);
 
   return offset;
 }
@@ -1670,11 +1739,13 @@ dissect_cmip_DeleteResult(gboolean impli
 
 static int
 dissect_cmip_T_eventReplyInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // EventReply/eventReplyInfo -> EventReply/eventReplyInfo
+  increment_dissection_depth(actx->pinfo);
 #line 452 "./asn1/cmip/cmip.cnf"
   offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree, actx->private_data);
 
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -1697,11 +1768,13 @@ dissect_cmip_EventReply(gboolean implici
 
 static int
 dissect_cmip_EventReportArgumentEventInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 449 "./asn1/cmip/cmip.cnf"
+  // EventReportArgument/eventInfo -> EventReportArgument/eventInfo
+  increment_dissection_depth(actx->pinfo);
+  #line 449 "./asn1/cmip/cmip.cnf"
   offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree, actx->private_data);
 
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -1964,11 +2037,14 @@ dissect_cmip_T_errorId(gboolean implicit
 
 static int
 dissect_cmip_T_errorInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // SpecificErrorInfo/errorInfo -> SpecificErrorInfo/errorInfo
+  increment_dissection_depth(actx->pinfo);
+
 #line 468 "./asn1/cmip/cmip.cnf"
   offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree, actx->private_data);
 
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -2060,7 +2136,9 @@ dissect_cmip_NoSuchEventType(gboolean im
 
 static int
 dissect_cmip_T_attributevalue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 455 "./asn1/cmip/cmip.cnf"
+  // SetArgument/modificationList/_item/attributeValue -> SetArgument/modificationList/_item/attributeValue
+  increment_dissection_depth(actx->pinfo);
+  #line 455 "./asn1/cmip/cmip.cnf"
   if(actx->external.direct_ref_present){
     offset=call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL);
   } else if (actx->external.indirect_ref_present &&
@@ -2071,7 +2149,7 @@ dissect_cmip_T_attributevalue(gboolean i
   }
 
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -2305,11 +2383,13 @@ dissect_cmip_BOOLEAN(gboolean implicit_t
 
 static int
 dissect_cmip_T_information(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // ManagementExtension/information -> ManagementExtension/information
+  increment_dissection_depth(actx->pinfo);
 #line 484 "./asn1/cmip/cmip.cnf"
   offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree, actx->private_data);
 
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -2402,11 +2482,13 @@ dissect_cmip_AttributeList(gboolean impl
 
 static int
 dissect_cmip_T_oldAttributeValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // AttributeValueChangeDefinition/_item/oldAttributeValue -> AttributeValueChangeDefinition/_item/oldAttributeValue
+  increment_dissection_depth(actx->pinfo);
 #line 487 "./asn1/cmip/cmip.cnf"
   offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree, actx->private_data);
 
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -2414,11 +2496,13 @@ dissect_cmip_T_oldAttributeValue(gboolea
 
 static int
 dissect_cmip_T_newAttributeValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // AttributeValueChangeDefinition/_item/newAttributeValue -> AttributeValueChangeDefinition/_item/newAttributeValue
+  increment_dissection_depth(actx->pinfo);
 #line 490 "./asn1/cmip/cmip.cnf"
   offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree, actx->private_data);
 
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -3190,11 +3274,13 @@ dissect_cmip_T_serviceUseridentifier(gbo
 
 static int
 dissect_cmip_T_details(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 495 "./asn1/cmip/cmip.cnf"
+  // ServiceUser/details -> ServiceUser/details
+  increment_dissection_depth(actx->pinfo);
+  #line 495 "./asn1/cmip/cmip.cnf"
   offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree, actx->private_data);
 
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -3313,11 +3399,13 @@ dissect_cmip_T_featureIdentifier(gboolea
 
 static int
 dissect_cmip_T_featureInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // SupportedFeatures/_item/featureInfo -> SupportedFeatures/_item/featureInfo
+  increment_dissection_depth(actx->pinfo);
 #line 500 "./asn1/cmip/cmip.cnf"
   offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree, actx->private_data);
 
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -3573,6 +3661,7 @@ dissect_cmip_T_local(gboolean implicit_t
   }
 
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -3643,6 +3732,8 @@ dissect_cmip_T_linkedId(gboolean implici
 
 static int
 dissect_cmip_InvokeArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // Invoke/argument -> Invoke/argument
+  increment_dissection_depth(actx->pinfo);
 #line 296 "./asn1/cmip/cmip.cnf"
     switch(opcode){
     case 0: /* M-eventreport */
@@ -3682,7 +3773,7 @@ dissect_cmip_InvokeArgument(gboolean imp
 
 
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -3711,7 +3802,9 @@ dissect_cmip_Invoke(gboolean implicit_ta
 
 static int
 dissect_cmip_ResultArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 334 "./asn1/cmip/cmip.cnf"
+  // ReturnResult/result/result -> ReturnResult/result/result
+  increment_dissection_depth(actx->pinfo);
+  #line 334 "./asn1/cmip/cmip.cnf"
 
     switch(opcode){
     case 0: /* M-eventreport*/
@@ -3746,7 +3839,7 @@ dissect_cmip_ResultArgument(gboolean imp
   /*XXX add more types here */
 
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -3788,6 +3881,8 @@ dissect_cmip_ReturnResult(gboolean impli
 
 static int
 dissect_cmip_T_parameter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // ReturnError/parameter -> ReturnError/parameter
+  increment_dissection_depth(actx->pinfo);
 #line 368 "./asn1/cmip/cmip.cnf"
 
     switch(opcode){
@@ -3859,6 +3954,7 @@ dissect_cmip_T_parameter(gboolean implic
 
 
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -4025,6 +4121,7 @@ dissect_cmip_ROS(gboolean implicit_tag _
                                  ROS_choice, hf_index, ett_cmip_ROS,
                                  NULL);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
Index: wireshark-3.6.24/epan/dissectors/packet-dap.c
===================================================================
--- wireshark-3.6.24.orig/epan/dissectors/packet-dap.c
+++ wireshark-3.6.24/epan/dissectors/packet-dap.c
@@ -718,6 +718,18 @@ static const value_string dap_err_code_s
 /* FamilyEntries -> FamilyEntries/familyEntries -> FamilyEntry -> FamilyEntry/family-info -> FamilyEntries */
 static int dissect_dap_FamilyEntries(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
 
+/* FilterItem/substrings/strings/_item/initial -> FilterItem/substrings/strings/_item/initial */
+static int dissect_dap_T_initial(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* FilterItem/substrings/strings/_item/any -> FilterItem/substrings/strings/_item/any */
+static int dissect_dap_T_any(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* FilterItem/substrings/strings/_item/final -> FilterItem/substrings/strings/_item/final */
+static int dissect_dap_T_final(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* MatchingRuleAssertion/matchValue -> MatchingRuleAssertion/matchValue */
+static int dissect_dap_T_matchValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
 /* Filter -> SetOfFilter -> Filter */
 /* Filter -> Filter */
 /*int dissect_dap_Filter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);*/
@@ -1310,11 +1322,13 @@ dissect_dap_FamilyEntries(gboolean impli
 
 static int
 dissect_dap_T_initial(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-	proto_item *it;
+  // FilterItem/substrings/strings/_item/initial -> FilterItem/substrings/strings/_item/initial
+  increment_dissection_depth(actx->pinfo);
+  proto_item *it;
 	it = proto_tree_add_item(tree, hf_index, tvb, offset, -1, ENC_BIG_ENDIAN);
 	proto_item_append_text(it," XXX: Not yet implemented!");
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -1322,9 +1336,12 @@ dissect_dap_T_initial(gboolean implicit_
 
 static int
 dissect_dap_T_any(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-	/* XXX: not yet implemented */
-
-
+  // FilterItem/substrings/strings/_item/any -> FilterItem/substrings/strings/_item/any
+  increment_dissection_depth(actx->pinfo);
+ 	/* XXX: not yet implemented */
+ 
+ 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -1409,8 +1426,12 @@ dissect_dap_T_matchingRule(gboolean impl
 
 static int
 dissect_dap_T_matchValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-	/* XXX: not yet implemented */
-
+  // MatchingRuleAssertion/matchValue -> MatchingRuleAssertion/matchValue
+  increment_dissection_depth(actx->pinfo);
+ 	/* XXX: not yet implemented */
+ 
+ 
+  decrement_dissection_depth(actx->pinfo);
 
   return offset;
 }
Index: wireshark-3.6.24/epan/dissectors/packet-e1ap.c
===================================================================
--- wireshark-3.6.24.orig/epan/dissectors/packet-e1ap.c
+++ wireshark-3.6.24/epan/dissectors/packet-e1ap.c
@@ -1544,8 +1544,11 @@ dissect_e1ap_TriggeringMessage(tvbuff_t
 
 static int
 dissect_e1ap_T_ie_field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // ProtocolIE-Field/value -> ProtocolIE-Field/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolIEFieldValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -1592,8 +1595,11 @@ dissect_e1ap_ProtocolIE_SingleContainer(
 
 static int
 dissect_e1ap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolExtensionFieldExtensionValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -1631,6 +1637,8 @@ dissect_e1ap_ProtocolExtensionContainer(
 
 static int
 dissect_e1ap_T_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // PrivateIE-Field/value -> PrivateIE-Field/value
+  increment_dissection_depth(actx->pinfo);
 #line 113 "./asn1/e1ap/e1ap.cnf"
   e1ap_private_data_t *e1ap_data = e1ap_get_private_data(actx->pinfo);
   if (e1ap_data->obj_id) {
@@ -1641,7 +1649,7 @@ dissect_e1ap_T_value(tvbuff_t *tvb _U_,
   }
 
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -1731,6 +1739,27 @@ dissect_e1ap_DRB_Activity_List(tvbuff_t
   return offset;
 }
 
+/*--- Cyclic dependencies ---*/
+
+/* ProtocolIE-Field/value -> ProtocolIE-Field/value */
+static int dissect_e1ap_T_ie_field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue */
+static int dissect_e1ap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* PrivateIE-Field/value -> PrivateIE-Field/value */
+static int dissect_e1ap_T_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* InitiatingMessage/value -> InitiatingMessage/value */
+static int dissect_e1ap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* SuccessfulOutcome/value -> SuccessfulOutcome/value */
+static int dissect_e1ap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value */
+static int dissect_e1ap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+
 
 
 static int
@@ -2749,6 +2778,7 @@ dissect_e1ap_T_startTimeStamp_01(tvbuff_
   }
 
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -8872,12 +8902,15 @@ dissect_e1ap_EarlyForwardingSNTransfer(t
 
 static int
 dissect_e1ap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // InitiatingMessage/value -> InitiatingMessage/value
+  increment_dissection_depth(actx->pinfo);
 #line 92 "./asn1/e1ap/e1ap.cnf"
   e1ap_private_data_t *e1ap_data = e1ap_get_private_data(actx->pinfo);
   e1ap_data->message_type = INITIATING_MESSAGE;
 
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_InitiatingMessageValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -8901,12 +8934,15 @@ dissect_e1ap_InitiatingMessage(tvbuff_t
 
 static int
 dissect_e1ap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 96 "./asn1/e1ap/e1ap.cnf"
+  // SuccessfulOutcome/value -> SuccessfulOutcome/value
+  increment_dissection_depth(actx->pinfo);
+  #line 96 "./asn1/e1ap/e1ap.cnf"
   e1ap_private_data_t *e1ap_data = e1ap_get_private_data(actx->pinfo);
   e1ap_data->message_type = SUCCESSFUL_OUTCOME;
 
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_SuccessfulOutcomeValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -8930,12 +8966,15 @@ dissect_e1ap_SuccessfulOutcome(tvbuff_t
 
 static int
 dissect_e1ap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value
+  increment_dissection_depth(actx->pinfo);
 #line 100 "./asn1/e1ap/e1ap.cnf"
   e1ap_private_data_t *e1ap_data = e1ap_get_private_data(actx->pinfo);
   e1ap_data->message_type = UNSUCCESSFUL_OUTCOME;
 
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_UnsuccessfulOutcomeValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
Index: wireshark-3.6.24/epan/dissectors/packet-e2ap.c
===================================================================
--- wireshark-3.6.24.orig/epan/dissectors/packet-e2ap.c
+++ wireshark-3.6.24/epan/dissectors/packet-e2ap.c
@@ -510,6 +510,19 @@ static int dissect_InitiatingMessageValu
 static int dissect_SuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *);
 static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *);
 
+/* ProtocolIE-Field/value -> ProtocolIE-Field/value */
+static int dissect_e2ap_T_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* InitiatingMessage/value -> InitiatingMessage/value */
+static int dissect_e2ap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* SuccessfulOutcome/value -> SuccessfulOutcome/value */
+static int dissect_e2ap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value */
+static int dissect_e2ap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+
 static struct e2ap_private_data*
 e2ap_get_private_data(packet_info *pinfo)
 {
@@ -651,8 +664,11 @@ dissect_e2ap_TriggeringMessage(tvbuff_t
 
 static int
 dissect_e2ap_T_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // ProtocolIE-Field/value -> ProtocolIE-Field/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolIEFieldValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -2126,12 +2142,15 @@ dissect_e2ap_RICserviceQuery(tvbuff_t *t
 
 static int
 dissect_e2ap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // InitiatingMessage/value -> InitiatingMessage/value
+  increment_dissection_depth(actx->pinfo);
 #line 111 "./asn1/e2ap/e2ap.cnf"
   struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo);
   e2ap_data->message_type = INITIATING_MESSAGE;
 
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_InitiatingMessageValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -2155,12 +2174,15 @@ dissect_e2ap_InitiatingMessage(tvbuff_t
 
 static int
 dissect_e2ap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 115 "./asn1/e2ap/e2ap.cnf"
+  // SuccessfulOutcome/value -> SuccessfulOutcome/value
+  increment_dissection_depth(actx->pinfo);
+  #line 115 "./asn1/e2ap/e2ap.cnf"
   struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo);
   e2ap_data->message_type = SUCCESSFUL_OUTCOME;
 
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_SuccessfulOutcomeValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -2184,7 +2206,9 @@ dissect_e2ap_SuccessfulOutcome(tvbuff_t
 
 static int
 dissect_e2ap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 119 "./asn1/e2ap/e2ap.cnf"
+  // UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value
+  increment_dissection_depth(actx->pinfo);
+  #line 119 "./asn1/e2ap/e2ap.cnf"
   struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo);
   e2ap_data->message_type = UNSUCCESSFUL_OUTCOME;
 
@@ -2207,9 +2231,9 @@ dissect_e2ap_UnsuccessfulOutcome_value(t
 
 
 
-
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_UnsuccessfulOutcomeValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
Index: wireshark-3.6.24/epan/dissectors/packet-f1ap.c
===================================================================
--- wireshark-3.6.24.orig/epan/dissectors/packet-f1ap.c
+++ wireshark-3.6.24/epan/dissectors/packet-f1ap.c
@@ -3837,8 +3837,11 @@ dissect_f1ap_TriggeringMessage(tvbuff_t
 
 static int
 dissect_f1ap_T_ie_field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // ProtocolIE-Field/value -> ProtocolIE-Field/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolIEFieldValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -3885,8 +3888,11 @@ dissect_f1ap_ProtocolIE_SingleContainer(
 
 static int
 dissect_f1ap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolExtensionFieldExtensionValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -3924,6 +3930,8 @@ dissect_f1ap_ProtocolExtensionContainer(
 
 static int
 dissect_f1ap_T_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // PrivateIE-Field/value -> PrivateIE-Field/value
+  increment_dissection_depth(actx->pinfo);
 #line 102 "./asn1/f1ap/f1ap.cnf"
   f1ap_private_data_t *f1ap_data = f1ap_get_private_data(actx->pinfo);
   if (f1ap_data->obj_id) {
@@ -3934,7 +3942,7 @@ dissect_f1ap_T_value(tvbuff_t *tvb _U_,
   }
 
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -5423,6 +5431,27 @@ dissect_f1ap_SpatialRelationPos(tvbuff_t
   return offset;
 }
 
+/*--- Cyclic dependencies ---*/
+
+/* ProtocolIE-Field/value -> ProtocolIE-Field/value */
+static int dissect_f1ap_T_ie_field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue */
+static int dissect_f1ap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* PrivateIE-Field/value -> PrivateIE-Field/value */
+static int dissect_f1ap_T_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* InitiatingMessage/value -> InitiatingMessage/value */
+static int dissect_f1ap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* SuccessfulOutcome/value -> SuccessfulOutcome/value */
+static int dissect_f1ap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value */
+static int dissect_f1ap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+
 
 static const per_sequence_t PosSRSResource_Item_sequence[] = {
   { &hf_f1ap_srs_PosResourceId, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_f1ap_SRSPosResourceID },
@@ -16798,6 +16827,7 @@ dissect_f1ap_Latest_RRC_Version_Enhanced
   }
 
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -21791,12 +21821,15 @@ dissect_f1ap_E_CIDMeasurementTermination
 
 static int
 dissect_f1ap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // InitiatingMessage/value -> InitiatingMessage/value
+  increment_dissection_depth(actx->pinfo);
 #line 81 "./asn1/f1ap/f1ap.cnf"
   f1ap_private_data_t *f1ap_data = f1ap_get_private_data(actx->pinfo);
   f1ap_data->message_type = INITIATING_MESSAGE;
 
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_InitiatingMessageValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -21820,12 +21853,15 @@ dissect_f1ap_InitiatingMessage(tvbuff_t
 
 static int
 dissect_f1ap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // SuccessfulOutcome/value -> SuccessfulOutcome/value
+  increment_dissection_depth(actx->pinfo);
 #line 85 "./asn1/f1ap/f1ap.cnf"
   f1ap_private_data_t *f1ap_data = f1ap_get_private_data(actx->pinfo);
   f1ap_data->message_type = SUCCESSFUL_OUTCOME;
 
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_SuccessfulOutcomeValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -21855,6 +21891,7 @@ dissect_f1ap_UnsuccessfulOutcome_value(t
 
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_UnsuccessfulOutcomeValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
Index: wireshark-3.6.24/epan/dissectors/packet-ftam.c
===================================================================
--- wireshark-3.6.24.orig/epan/dissectors/packet-ftam.c
+++ wireshark-3.6.24/epan/dissectors/packet-ftam.c
@@ -646,6 +646,24 @@ static gint ett_ftam_AE_title = -1;
 
 static expert_field ei_ftam_zero_pdu = EI_INIT;
 
+/*--- Cyclic dependencies ---*/
+
+/* Contents-Type-Attribute/document-type/parameter -> Contents-Type-Attribute/document-type/parameter */
+static int dissect_ftam_T_parameter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* AP-title -> AP-title */
+static int dissect_ftam_AP_title(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* AE-qualifier -> AE-qualifier */
+static int dissect_ftam_AE_qualifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* Extension-Attribute/extension-attribute -> Extension-Attribute/extension-attribute */
+static int dissect_ftam_T_extension_attribute(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* Attribute-Extensions-Pattern/_item/extension-set-attribute-Patterns/_item/extension-attribute-Pattern -> Attribute-Extensions-Pattern/_item/extension-set-attribute-Patterns/_item/extension-attribute-Pattern */
+static int dissect_ftam_T_extension_attribute_Pattern(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+
 
 /*--- Included file: packet-ftam-fn.c ---*/
 #line 1 "./asn1/ftam/packet-ftam-fn.c"
@@ -1696,13 +1714,15 @@ dissect_ftam_Permitted_Actions_Attribute
 
 static int
 dissect_ftam_T_parameter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 94 "./asn1/ftam/ftam.cnf"
+  // Contents-Type-Attribute/document-type/parameter -> Contents-Type-Attribute/document-type/parameter
+  increment_dissection_depth(actx->pinfo);
+  #line 94 "./asn1/ftam/ftam.cnf"
   if (actx->external.direct_reference) {
     offset=call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL);
   }
 
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -1902,10 +1922,12 @@ dissect_ftam_Concurrency_Access(gboolean
 
 static int
 dissect_ftam_AP_title(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 112 "./asn1/ftam/ftam.cnf"
+  // AP-title -> AP-title
+  increment_dissection_depth(actx->pinfo);
+  #line 112 "./asn1/ftam/ftam.cnf"
   /* XXX have no idea about this one */
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -1913,11 +1935,13 @@ dissect_ftam_AP_title(gboolean implicit_
 
 static int
 dissect_ftam_AE_qualifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // AE-qualifier -> AE-qualifier
+  increment_dissection_depth(actx->pinfo);
 #line 114 "./asn1/ftam/ftam.cnf"
   /* XXX have no idea about this one */
 
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -2067,13 +2091,15 @@ dissect_ftam_T_extension_attribute_ident
 
 static int
 dissect_ftam_T_extension_attribute(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 99 "./asn1/ftam/ftam.cnf"
+  // Extension-Attribute/extension-attribute -> Extension-Attribute/extension-attribute
+  increment_dissection_depth(actx->pinfo);
+  #line 99 "./asn1/ftam/ftam.cnf"
   if (actx->external.direct_reference) {
     offset=call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL);
   }
 
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -3779,13 +3805,15 @@ dissect_ftam_T_attribute_extension_attri
 
 static int
 dissect_ftam_T_extension_attribute_Pattern(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // Attribute-Extensions-Pattern/_item/extension-set-attribute-Patterns/_item/extension-attribute-Pattern -> Attribute-Extensions-Pattern/_item/extension-set-attribute-Patterns/_item/extension-attribute-Pattern
+  increment_dissection_depth(actx->pinfo);
 #line 107 "./asn1/ftam/ftam.cnf"
   if (actx->external.direct_reference) {
     offset=call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL);
   }
 
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
Index: wireshark-3.6.24/epan/dissectors/packet-gprscdr.c
===================================================================
--- wireshark-3.6.24.orig/epan/dissectors/packet-gprscdr.c
+++ wireshark-3.6.24/epan/dissectors/packet-gprscdr.c
@@ -726,6 +726,12 @@ dissect_gprscdr_BCDDirectoryNumber(gbool
   return offset;
 }
 
+/*--- Cyclic dependencies ---*/
+
+/* ManagementExtension/information -> ManagementExtension/information */
+static int dissect_gprscdr_T_information(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+
 
 
 static int
@@ -962,6 +968,8 @@ dissect_gprscdr_BOOLEAN(gboolean implici
 
 static int
 dissect_gprscdr_T_information(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // ManagementExtension/information -> ManagementExtension/information
+  increment_dissection_depth(actx->pinfo);
 #line 54 "./asn1/gprscdr/gprscdr.cnf"
 
   proto_tree *ext_tree;
@@ -974,6 +982,7 @@ dissect_gprscdr_T_information(gboolean i
 
 
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
Index: wireshark-3.6.24/epan/dissectors/packet-gsm_map.c
===================================================================
--- wireshark-3.6.24.orig/epan/dissectors/packet-gsm_map.c
+++ wireshark-3.6.24/epan/dissectors/packet-gsm_map.c
@@ -3718,6 +3718,12 @@ dissect_gsm_map_Ext_TeleserviceCode(gboo
 
 /* --- Module MAP-ExtensionDataTypes --- --- ---                              */
 
+/*--- Cyclic dependencies ---*/
+
+/* PrivateExtension/extType -> PrivateExtension/extType */
+static int dissect_gsm_map_T_extType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+
 
 
 static int
@@ -3736,6 +3742,8 @@ dissect_gsm_map_T_extId(gboolean implici
 
 static int
 dissect_gsm_map_T_extType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // PrivateExtension/extType -> PrivateExtension/extType
+  increment_dissection_depth(actx->pinfo);
 #line 231 "./asn1/gsm_map/gsm_map.cnf"
   proto_tree *ext_tree;
   ext_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_gsm_map_extension_data, NULL, "Extension Data");
@@ -3748,6 +3756,7 @@ dissect_gsm_map_T_extType(gboolean impli
 
 
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
Index: wireshark-3.6.24/epan/dissectors/packet-h450-ros.c
===================================================================
--- wireshark-3.6.24.orig/epan/dissectors/packet-h450-ros.c
+++ wireshark-3.6.24/epan/dissectors/packet-h450-ros.c
@@ -121,6 +121,18 @@ dissect_h450_ros_T_local(tvbuff_t *tvb _
   return offset;
 }
 
+/*--- Cyclic dependencies ---*/
+
+/* Invoke/argument -> Invoke/argument */
+static int dissect_h450_ros_InvokeArgument(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* ReturnResult/result/result -> ReturnResult/result/result */
+static int dissect_h450_ros_ResultArgument(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* ReturnError/parameter -> ReturnError/parameter */
+static int dissect_h450_ros_T_parameter(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+
 
 
 static int
@@ -180,8 +192,11 @@ dissect_h450_ros_T_invokeIdConstrained(t
 
 static int
 dissect_h450_ros_InvokeArgument(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // Invoke/argument -> Invoke/argument
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, argument_cb);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -249,8 +264,11 @@ dissect_h450_ros_Invoke(tvbuff_t *tvb _U
 
 static int
 dissect_h450_ros_ResultArgument(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // ReturnResult/result/result -> ReturnResult/result/result
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, result_cb);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -334,8 +352,11 @@ dissect_h450_ros_ReturnResult(tvbuff_t *
 
 static int
 dissect_h450_ros_T_parameter(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // ReturnError/parameter -> ReturnError/parameter
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, error_cb);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
Index: wireshark-3.6.24/epan/dissectors/packet-h450.c
===================================================================
--- wireshark-3.6.24.orig/epan/dissectors/packet-h450.c
+++ wireshark-3.6.24/epan/dissectors/packet-h450.c
@@ -823,6 +823,12 @@ static rose_ctx_t h450_rose_ctx;
 
 /* --- Modules H4501-Supplementary-ServiceAPDU-Structure Addressing-Data-Elements H225-generic-parameters-definition Manufacturer-specific-service-extension-definition H4501-General-Error-List --- --- --- */
 
+/*--- Cyclic dependencies ---*/
+
+/* Extension/extensionArgument -> Extension/extensionArgument */
+static int dissect_h450_T_extensionArgument(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+
 
 
 static int
@@ -1103,8 +1109,11 @@ dissect_h450_OBJECT_IDENTIFIER(tvbuff_t
 
 static int
 dissect_h450_T_extensionArgument(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // Extension/extensionArgument -> Extension/extensionArgument
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type(tvb, offset, actx, tree, hf_index, NULL);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
Index: wireshark-3.6.24/epan/dissectors/packet-hnbap.c
===================================================================
--- wireshark-3.6.24.orig/epan/dissectors/packet-hnbap.c
+++ wireshark-3.6.24/epan/dissectors/packet-hnbap.c
@@ -359,6 +359,27 @@ hnbap_get_private_data(packet_info *pinf
   return hnbap_data;
 }
 
+/*--- Cyclic dependencies ---*/
+
+/* ProtocolIE-Field/value -> ProtocolIE-Field/value */
+static int dissect_hnbap_ProtocolIE_Field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue */
+static int dissect_hnbap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* PrivateIE-Field/value -> PrivateIE-Field/value */
+static int dissect_hnbap_PrivateIE_Field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* InitiatingMessage/value -> InitiatingMessage/value */
+static int dissect_hnbap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* SuccessfulOutcome/value -> SuccessfulOutcome/value */
+static int dissect_hnbap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value */
+static int dissect_hnbap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+
 
 /*--- Included file: packet-hnbap-fn.c ---*/
 #line 1 "./asn1/hnbap/packet-hnbap-fn.c"
@@ -521,8 +542,11 @@ dissect_hnbap_TriggeringMessage(tvbuff_t
 
 static int
 dissect_hnbap_ProtocolIE_Field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // ProtocolIE-Field/value -> ProtocolIE-Field/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolIEFieldValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -560,8 +584,11 @@ dissect_hnbap_ProtocolIE_Container(tvbuf
 
 static int
 dissect_hnbap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolExtensionFieldExtensionValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -599,8 +626,11 @@ dissect_hnbap_ProtocolExtensionContainer
 
 static int
 dissect_hnbap_PrivateIE_Field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // PrivateIE-Field/value -> PrivateIE-Field/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type(tvb, offset, actx, tree, hf_index, NULL);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -2217,8 +2247,11 @@ dissect_hnbap_PrivateMessage(tvbuff_t *t
 
 static int
 dissect_hnbap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // InitiatingMessage/value -> InitiatingMessage/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_InitiatingMessageValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -2242,8 +2275,11 @@ dissect_hnbap_InitiatingMessage(tvbuff_t
 
 static int
 dissect_hnbap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // SuccessfulOutcome/value -> SuccessfulOutcome/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_SuccessfulOutcomeValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -2267,8 +2303,11 @@ dissect_hnbap_SuccessfulOutcome(tvbuff_t
 
 static int
 dissect_hnbap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_UnsuccessfulOutcomeValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
Index: wireshark-3.6.24/epan/dissectors/packet-inap.c
===================================================================
--- wireshark-3.6.24.orig/epan/dissectors/packet-inap.c
+++ wireshark-3.6.24/epan/dissectors/packet-inap.c
@@ -1426,6 +1426,36 @@ static const value_string inap_err_code_
   { 0, NULL }
 };
 
+/*--- Cyclic dependencies ---*/
+
+/* ExtensionField/value -> ExtensionField/value */
+static int dissect_inap_T_value(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* TriggerData/triggerPar -> TriggerData/triggerPar */
+static int dissect_inap_T_triggerPar(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* ScriptCloseArg/uIScriptSpecificInfo -> ScriptCloseArg/uIScriptSpecificInfo */
+static int dissect_inap_T_uIScriptSpecificInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* ScriptEventArg/uIScriptResult -> ScriptEventArg/uIScriptResult */
+static int dissect_inap_T_uIScriptResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* ScriptInformationArg/uIScriptSpecificInfo -> ScriptInformationArg/uIScriptSpecificInfo */
+static int dissect_inap_T_uIScriptSpecificInfo_01(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* ScriptRunArg/uIScriptSpecificInfo -> ScriptRunArg/uIScriptSpecificInfo */
+static int dissect_inap_T_uIScriptSpecificInfo_02(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* Invoke/argument -> Invoke/argument */
+static int dissect_inap_T_argument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* ReturnResult/result/result -> ReturnResult/result/result */
+static int dissect_inap_ResultArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* ReturnError/parameter -> ReturnError/parameter */
+static int dissect_inap_T_parameter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+
 
 /*--- End of included file: packet-inap-table.c ---*/
 #line 96 "./asn1/inap/packet-inap-template.c"
@@ -1520,7 +1550,9 @@ dissect_inap_Code(gboolean implicit_tag
 
 static int
 dissect_inap_T_value(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 235 "./asn1/inap/inap.cnf"
+  // ExtensionField/value -> ExtensionField/value
+  increment_dissection_depth(actx->pinfo);
+  #line 235 "./asn1/inap/inap.cnf"
   proto_tree *ext_tree;
   ext_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_inap_extension_data, NULL, "Extension Data");
   if (obj_id){
@@ -1534,6 +1566,7 @@ dissect_inap_T_value(gboolean implicit_t
 
 
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -5262,11 +5295,13 @@ dissect_inap_T_triggerId(gboolean implic
 
 static int
 dissect_inap_T_triggerPar(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 216 "./asn1/inap/inap.cnf"
+  // TriggerData/triggerPar -> TriggerData/triggerPar
+  increment_dissection_depth(actx->pinfo);
+  #line 216 "./asn1/inap/inap.cnf"
 /* FIX ME */
 
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -7840,11 +7875,13 @@ dissect_inap_MessageReceivedArg(gboolean
 
 static int
 dissect_inap_T_uIScriptSpecificInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 222 "./asn1/inap/inap.cnf"
+  // ScriptCloseArg/uIScriptSpecificInfo -> ScriptCloseArg/uIScriptSpecificInfo
+  increment_dissection_depth(actx->pinfo);
+  #line 222 "./asn1/inap/inap.cnf"
 /* FIX ME */
 
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -7869,11 +7906,13 @@ dissect_inap_ScriptCloseArg(gboolean imp
 
 static int
 dissect_inap_T_uIScriptResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // ScriptEventArg/uIScriptResult -> ScriptEventArg/uIScriptResult
+  increment_dissection_depth(actx->pinfo);
 #line 219 "./asn1/inap/inap.cnf"
 /* FIX ME */
 
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -7899,10 +7938,12 @@ dissect_inap_ScriptEventArg(gboolean imp
 
 static int
 dissect_inap_T_uIScriptSpecificInfo_01(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 225 "./asn1/inap/inap.cnf"
+  // ScriptInformationArg/uIScriptSpecificInfo -> ScriptInformationArg/uIScriptSpecificInfo
+  increment_dissection_depth(actx->pinfo);
+  #line 225 "./asn1/inap/inap.cnf"
 /* FIX ME */
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -7927,11 +7968,13 @@ dissect_inap_ScriptInformationArg(gboole
 
 static int
 dissect_inap_T_uIScriptSpecificInfo_02(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // ScriptRunArg/uIScriptSpecificInfo -> ScriptRunArg/uIScriptSpecificInfo
+  increment_dissection_depth(actx->pinfo);
 #line 227 "./asn1/inap/inap.cnf"
 /* FIX ME */
 
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -8158,12 +8201,14 @@ dissect_inap_T_linkedId(gboolean implici
 
 static int
 dissect_inap_T_argument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 201 "./asn1/inap/inap.cnf"
+  // Invoke/argument -> Invoke/argument
+  increment_dissection_depth(actx->pinfo);
+  #line 201 "./asn1/inap/inap.cnf"
 
   offset = dissect_invokeData(tree, tvb, offset, actx);
 
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -8193,12 +8238,14 @@ dissect_inap_Invoke(gboolean implicit_ta
 
 static int
 dissect_inap_ResultArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 205 "./asn1/inap/inap.cnf"
+  // ReturnResult/result/result -> ReturnResult/result/result
+  increment_dissection_depth(actx->pinfo);
+  #line 205 "./asn1/inap/inap.cnf"
 
   offset = dissect_returnResultData(tree, tvb, offset, actx);
 
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -8241,14 +8288,16 @@ dissect_inap_ReturnResult(gboolean impli
 
 static int
 dissect_inap_T_parameter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 209 "./asn1/inap/inap.cnf"
+  // ReturnError/parameter -> ReturnError/parameter
+  increment_dissection_depth(actx->pinfo);
+  #line 209 "./asn1/inap/inap.cnf"
 
   offset = dissect_returnErrorData(tree, tvb, offset, actx);
 
 
 
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
Index: wireshark-3.6.24/epan/dissectors/packet-its.c
===================================================================
--- wireshark-3.6.24.orig/epan/dissectors/packet-its.c
+++ wireshark-3.6.24/epan/dissectors/packet-its.c
@@ -7007,6 +7007,12 @@ dissect_dsrc_app_VehicleWeightLimits(tvb
 
 /* --- Module DSRC --- --- ---                                                */
 
+/*--- Cyclic dependencies ---*/
+
+/* RegionalExtension/regExtValue -> RegionalExtension/regExtValue */
+static int dissect_dsrc_T_regExtValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+
 
 static const value_string dsrc_RegionId_vals[] = {
   { noRegion, "noRegion" },
@@ -7029,8 +7035,11 @@ dissect_dsrc_RegionId(tvbuff_t *tvb _U_,
 
 static int
 dissect_dsrc_T_regExtValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // RegionalExtension/regExtValue -> RegionalExtension/regExtValue
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_regextval_pdu);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -18464,6 +18473,8 @@ dissect_cpm_FreeSpaceArea(tvbuff_t *tvb
   return offset;
 }
 
+/*--- Cyclic dependencies ---*/
+
 
 
 static int
Index: wireshark-3.6.24/epan/dissectors/packet-lcsap.c
===================================================================
--- wireshark-3.6.24.orig/epan/dissectors/packet-lcsap.c
+++ wireshark-3.6.24/epan/dissectors/packet-lcsap.c
@@ -456,6 +456,24 @@ static const value_string lcsap_gnss_pos
   { 0, NULL }
 };
 
+/*--- Cyclic dependencies ---*/
+
+/* ProtocolIE-Field/value -> ProtocolIE-Field/value */
+static int dissect_lcsap_T_ie_field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue */
+static int dissect_lcsap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* InitiatingMessage/value -> InitiatingMessage/value */
+static int dissect_lcsap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* SuccessfulOutcome/value -> SuccessfulOutcome/value */
+static int dissect_lcsap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value */
+static int dissect_lcsap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+
 
 
 /*--- Included file: packet-lcsap-fn.c ---*/
@@ -579,8 +597,11 @@ dissect_lcsap_ProtocolIE_ID(tvbuff_t *tv
 
 static int
 dissect_lcsap_T_ie_field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // ProtocolIE-Field/value -> ProtocolIE-Field/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolIEFieldValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -618,8 +639,11 @@ dissect_lcsap_ProtocolIE_Container(tvbuf
 
 static int
 dissect_lcsap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolExtensionFieldExtensionValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -2403,8 +2427,11 @@ dissect_lcsap_Ciphering_Key_Data_Result(
 
 static int
 dissect_lcsap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // InitiatingMessage/value -> InitiatingMessage/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_InitiatingMessageValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -2428,8 +2455,11 @@ dissect_lcsap_InitiatingMessage(tvbuff_t
 
 static int
 dissect_lcsap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // SuccessfulOutcome/value -> SuccessfulOutcome/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_SuccessfulOutcomeValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -2453,8 +2483,11 @@ dissect_lcsap_SuccessfulOutcome(tvbuff_t
 
 static int
 dissect_lcsap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_UnsuccessfulOutcomeValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
Index: wireshark-3.6.24/epan/dissectors/packet-lppa.c
===================================================================
--- wireshark-3.6.24.orig/epan/dissectors/packet-lppa.c
+++ wireshark-3.6.24/epan/dissectors/packet-lppa.c
@@ -514,6 +514,27 @@ lppa_get_private_data(packet_info* pinfo
     return lppa_data;
 }
 
+/*--- Cyclic dependencies ---*/
+
+/* ProtocolIE-Field/value -> ProtocolIE-Field/value */
+static int dissect_lppa_T_ie_field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue */
+static int dissect_lppa_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* PrivateIE-Field/value -> PrivateIE-Field/value */
+static int dissect_lppa_T_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* InitiatingMessage/value -> InitiatingMessage/value */
+static int dissect_lppa_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* SuccessfulOutcome/value -> SuccessfulOutcome/value */
+static int dissect_lppa_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value */
+static int dissect_lppa_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+
 
 /*--- Included file: packet-lppa-fn.c ---*/
 #line 1 "./asn1/lppa/packet-lppa-fn.c"
@@ -692,8 +713,11 @@ dissect_lppa_TriggeringMessage(tvbuff_t
 
 static int
 dissect_lppa_T_ie_field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // ProtocolIE-Field/value -> ProtocolIE-Field/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolIEFieldValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -740,8 +764,11 @@ dissect_lppa_ProtocolIE_Single_Container
 
 static int
 dissect_lppa_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolExtensionFieldExtensionValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -779,8 +806,11 @@ dissect_lppa_ProtocolExtensionContainer(
 
 static int
 dissect_lppa_T_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // PrivateIE-Field/value -> PrivateIE-Field/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type(tvb, offset, actx, tree, hf_index, NULL);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -3865,12 +3895,14 @@ dissect_lppa_PrivateMessage(tvbuff_t *tv
 
 static int
 dissect_lppa_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // InitiatingMessage/value -> InitiatingMessage/value
+  increment_dissection_depth(actx->pinfo);
 #line 62 "./asn1/lppa/lppa.cnf"
   struct lppa_private_data *lppa_data = lppa_get_private_data(actx->pinfo);
   lppa_data->message_type = INITIATING_MESSAGE;
 
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_InitiatingMessageValue);
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -3895,12 +3927,15 @@ dissect_lppa_InitiatingMessage(tvbuff_t
 
 static int
 dissect_lppa_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // SuccessfulOutcome/value -> SuccessfulOutcome/value
+  increment_dissection_depth(actx->pinfo);
 #line 66 "./asn1/lppa/lppa.cnf"
   struct lppa_private_data *lppa_data = lppa_get_private_data(actx->pinfo);
   lppa_data->message_type = SUCCESSFUL_OUTCOME;
 
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_SuccessfulOutcomeValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -3925,6 +3960,8 @@ dissect_lppa_SuccessfulOutcome(tvbuff_t
 
 static int
 dissect_lppa_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value
+  increment_dissection_depth(actx->pinfo);
 #line 70 "./asn1/lppa/lppa.cnf"
   struct lppa_private_data *lppa_data = lppa_get_private_data(actx->pinfo);
   lppa_data->message_type = UNSUCCESSFUL_OUTCOME;
@@ -3932,6 +3969,7 @@ dissect_lppa_UnsuccessfulOutcome_value(t
 
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_UnsuccessfulOutcomeValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
Index: wireshark-3.6.24/epan/dissectors/packet-m2ap.c
===================================================================
--- wireshark-3.6.24.orig/epan/dissectors/packet-m2ap.c
+++ wireshark-3.6.24/epan/dissectors/packet-m2ap.c
@@ -464,6 +464,27 @@ m2ap_get_private_data(packet_info *pinfo
   return m2ap_data;
 }
 
+/*--- Cyclic dependencies ---*/
+
+/* ProtocolIE-Field/value -> ProtocolIE-Field/value */
+static int dissect_m2ap_T_ie_field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue */
+static int dissect_m2ap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* PrivateIE-Field/value -> PrivateIE-Field/value */
+static int dissect_m2ap_T_private_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* InitiatingMessage/value -> InitiatingMessage/value */
+static int dissect_m2ap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* SuccessfulOutcome/value -> SuccessfulOutcome/value */
+static int dissect_m2ap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value */
+static int dissect_m2ap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+
 
 /*--- Included file: packet-m2ap-fn.c ---*/
 #line 1 "./asn1/m2ap/packet-m2ap-fn.c"
@@ -644,8 +665,11 @@ dissect_m2ap_TriggeringMessage(tvbuff_t
 
 static int
 dissect_m2ap_T_ie_field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // ProtocolIE-Field/value -> ProtocolIE-Field/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolIEFieldValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -692,8 +716,11 @@ dissect_m2ap_ProtocolIE_Single_Container
 
 static int
 dissect_m2ap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolExtensionFieldExtensionValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -731,8 +758,11 @@ dissect_m2ap_ProtocolExtensionContainer(
 
 static int
 dissect_m2ap_T_private_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // PrivateIE-Field/value -> PrivateIE-Field/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type(tvb, offset, actx, tree, hf_index, NULL);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -2838,12 +2868,15 @@ dissect_m2ap_Active_MBMS_Session_List(tv
 
 static int
 dissect_m2ap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // InitiatingMessage/value -> InitiatingMessage/value
+  increment_dissection_depth(actx->pinfo);
 #line 59 "./asn1/m2ap/m2ap.cnf"
   message_type = INITIATING_MESSAGE;
 
 
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_InitiatingMessageValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -2867,12 +2900,15 @@ dissect_m2ap_InitiatingMessage(tvbuff_t
 
 static int
 dissect_m2ap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // SuccessfulOutcome/value -> SuccessfulOutcome/value
+  increment_dissection_depth(actx->pinfo);
 #line 63 "./asn1/m2ap/m2ap.cnf"
   message_type = SUCCESSFUL_OUTCOME;
 
 
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_SuccessfulOutcomeValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -2896,12 +2932,15 @@ dissect_m2ap_SuccessfulOutcome(tvbuff_t
 
 static int
 dissect_m2ap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value
+  increment_dissection_depth(actx->pinfo);
 #line 67 "./asn1/m2ap/m2ap.cnf"
   message_type = UNSUCCESSFUL_OUTCOME;
 
 
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_UnsuccessfulOutcomeValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
Index: wireshark-3.6.24/epan/dissectors/packet-m3ap.c
===================================================================
--- wireshark-3.6.24.orig/epan/dissectors/packet-m3ap.c
+++ wireshark-3.6.24/epan/dissectors/packet-m3ap.c
@@ -310,6 +310,27 @@ m3ap_get_private_data(packet_info *pinfo
   return m3ap_data;
 }
 
+/*--- Cyclic dependencies ---*/
+
+/* ProtocolIE-Field/value -> ProtocolIE-Field/value */
+static int dissect_m3ap_T_ie_field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue */
+static int dissect_m3ap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* PrivateIE-Field/value -> PrivateIE-Field/value */
+static int dissect_m3ap_T_private_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* InitiatingMessage/value -> InitiatingMessage/value */
+static int dissect_m3ap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* SuccessfulOutcome/value -> SuccessfulOutcome/value */
+static int dissect_m3ap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value */
+static int dissect_m3ap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+
 
 /*--- Included file: packet-m3ap-fn.c ---*/
 #line 1 "./asn1/m3ap/packet-m3ap-fn.c"
@@ -463,8 +484,11 @@ dissect_m3ap_TriggeringMessage(tvbuff_t
 
 static int
 dissect_m3ap_T_ie_field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // ProtocolIE-Field/value -> ProtocolIE-Field/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolIEFieldValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -511,8 +535,11 @@ dissect_m3ap_ProtocolIE_Single_Container
 
 static int
 dissect_m3ap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolExtensionFieldExtensionValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -550,8 +577,11 @@ dissect_m3ap_ProtocolExtensionContainer(
 
 static int
 dissect_m3ap_T_private_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // PrivateIE-Field/value -> PrivateIE-Field/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type(tvb, offset, actx, tree, hf_index, NULL);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -1661,11 +1691,14 @@ dissect_m3ap_MCEConfigurationUpdateFailu
 
 static int
 dissect_m3ap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // InitiatingMessage/value -> InitiatingMessage/value
+  increment_dissection_depth(actx->pinfo);
 #line 68 "./asn1/m3ap/m3ap.cnf"
 	message_type = INITIATING_MESSAGE;
 
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_InitiatingMessageValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -1689,11 +1722,14 @@ dissect_m3ap_InitiatingMessage(tvbuff_t
 
 static int
 dissect_m3ap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // SuccessfulOutcome/value -> SuccessfulOutcome/value
+  increment_dissection_depth(actx->pinfo);
 #line 71 "./asn1/m3ap/m3ap.cnf"
 	message_type = SUCCESSFUL_OUTCOME;
 
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_SuccessfulOutcomeValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -1717,6 +1753,8 @@ dissect_m3ap_SuccessfulOutcome(tvbuff_t
 
 static int
 dissect_m3ap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value
+  increment_dissection_depth(actx->pinfo);
 #line 74 "./asn1/m3ap/m3ap.cnf"
 	message_type = UNSUCCESSFUL_OUTCOME;
 
@@ -1729,6 +1767,7 @@ dissect_m3ap_UnsuccessfulOutcome_value(t
 
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_UnsuccessfulOutcomeValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
Index: wireshark-3.6.24/epan/dissectors/packet-nbap.c
===================================================================
--- wireshark-3.6.24.orig/epan/dissectors/packet-nbap.c
+++ wireshark-3.6.24/epan/dissectors/packet-nbap.c
@@ -6825,6 +6825,30 @@ static void delete_setup_conv(nbap_setup
 /*Easy way to add hsdhsch binds for corner cases*/
 static void add_hsdsch_bind(packet_info * pinfo);
 
+/*--- Cyclic dependencies ---*/
+
+/* ProtocolIE-Field/value -> ProtocolIE-Field/value */
+static int dissect_nbap_ProtocolIE_Field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue */
+static int dissect_nbap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* PrivateIE-Field/value -> PrivateIE-Field/value */
+static int dissect_nbap_PrivateIE_Field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* InitiatingMessage/value -> InitiatingMessage/value */
+static int dissect_nbap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* SuccessfulOutcome/value -> SuccessfulOutcome/value */
+static int dissect_nbap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value */
+static int dissect_nbap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* Outcome/value -> Outcome/value */
+static int dissect_nbap_Outcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+
 
 /*--- Included file: packet-nbap-fn.c ---*/
 #line 1 "./asn1/nbap/packet-nbap-fn.c"
@@ -8334,8 +8358,11 @@ dissect_nbap_TriggeringMessage(tvbuff_t
 
 static int
 dissect_nbap_ProtocolIE_Field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // ProtocolIE-Field/value -> ProtocolIE-Field/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolIEFieldValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -8382,8 +8409,11 @@ dissect_nbap_ProtocolIE_Single_Container
 
 static int
 dissect_nbap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolExtensionFieldExtensionValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -8421,8 +8451,11 @@ dissect_nbap_ProtocolExtensionContainer(
 
 static int
 dissect_nbap_PrivateIE_Field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // PrivateIE-Field/value -> PrivateIE-Field/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type(tvb, offset, actx, tree, hf_index, NULL);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -47958,8 +47991,11 @@ dissect_nbap_SecondaryULFrequencyUpdateI
 
 static int
 dissect_nbap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // InitiatingMessage/value -> InitiatingMessage/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_InitiatingMessageValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -47985,8 +48021,11 @@ dissect_nbap_InitiatingMessage(tvbuff_t
 
 static int
 dissect_nbap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // SuccessfulOutcome/value -> SuccessfulOutcome/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_SuccessfulOutcomeValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -48012,8 +48051,11 @@ dissect_nbap_SuccessfulOutcome(tvbuff_t
 
 static int
 dissect_nbap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_UnsuccessfulOutcomeValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -48039,8 +48081,11 @@ dissect_nbap_UnsuccessfulOutcome(tvbuff_
 
 static int
 dissect_nbap_Outcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // Outcome/value -> Outcome/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type(tvb, offset, actx, tree, hf_index, NULL);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
Index: wireshark-3.6.24/epan/dissectors/packet-ngap.c
===================================================================
--- wireshark-3.6.24.orig/epan/dissectors/packet-ngap.c
+++ wireshark-3.6.24/epan/dissectors/packet-ngap.c
@@ -3378,8 +3378,11 @@ dissect_ngap_TriggeringMessage(tvbuff_t
 
 static int
 dissect_ngap_T_ie_field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // ProtocolIE-Field/value -> ProtocolIE-Field/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolIEFieldValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -3426,8 +3429,11 @@ dissect_ngap_ProtocolIE_SingleContainer(
 
 static int
 dissect_ngap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolExtensionFieldExtensionValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -3465,8 +3471,11 @@ dissect_ngap_ProtocolExtensionContainer(
 
 static int
 dissect_ngap_T_private_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // PrivateIE-Field/value -> PrivateIE-Field/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type(tvb, offset, actx, tree, hf_index, NULL);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -3965,6 +3974,27 @@ dissect_ngap_BitRate(tvbuff_t *tvb _U_,
   return offset;
 }
 
+/*--- Cyclic dependencies ---*/
+
+/* ProtocolIE-Field/value -> ProtocolIE-Field/value */
+static int dissect_ngap_T_ie_field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue */
+static int dissect_ngap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* PrivateIE-Field/value -> PrivateIE-Field/value */
+static int dissect_ngap_T_private_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* InitiatingMessage/value -> InitiatingMessage/value */
+static int dissect_ngap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* SuccessfulOutcome/value -> SuccessfulOutcome/value */
+static int dissect_ngap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value */
+static int dissect_ngap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+
 
 
 static int
@@ -18707,12 +18737,15 @@ dissect_ngap_AMFCPRelocationIndication(t
 
 static int
 dissect_ngap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // InitiatingMessage/value -> InitiatingMessage/value
+  increment_dissection_depth(actx->pinfo);
 #line 135 "./asn1/ngap/ngap.cnf"
   struct ngap_private_data *ngap_data = ngap_get_private_data(actx->pinfo);
   ngap_data->message_type = INITIATING_MESSAGE;
 
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_InitiatingMessageValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -18736,12 +18769,15 @@ dissect_ngap_InitiatingMessage(tvbuff_t
 
 static int
 dissect_ngap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // SuccessfulOutcome/value -> SuccessfulOutcome/value
+  increment_dissection_depth(actx->pinfo);
 #line 139 "./asn1/ngap/ngap.cnf"
   struct ngap_private_data *ngap_data = ngap_get_private_data(actx->pinfo);
   ngap_data->message_type = SUCCESSFUL_OUTCOME;
 
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_SuccessfulOutcomeValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -18765,6 +18801,8 @@ dissect_ngap_SuccessfulOutcome(tvbuff_t
 
 static int
 dissect_ngap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value
+  increment_dissection_depth(actx->pinfo);
 #line 143 "./asn1/ngap/ngap.cnf"
   struct ngap_private_data *ngap_data = ngap_get_private_data(actx->pinfo);
   ngap_data->message_type = UNSUCCESSFUL_OUTCOME;
@@ -18783,6 +18821,7 @@ dissect_ngap_UnsuccessfulOutcome_value(t
 
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_UnsuccessfulOutcomeValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
Index: wireshark-3.6.24/epan/dissectors/packet-nrppa.c
===================================================================
--- wireshark-3.6.24.orig/epan/dissectors/packet-nrppa.c
+++ wireshark-3.6.24/epan/dissectors/packet-nrppa.c
@@ -1248,8 +1248,11 @@ dissect_nrppa_TriggeringMessage(tvbuff_t
 
 static int
 dissect_nrppa_T_ie_field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // ProtocolIE-Field/value -> ProtocolIE-Field/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolIEFieldValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -1296,8 +1299,11 @@ dissect_nrppa_ProtocolIE_Single_Containe
 
 static int
 dissect_nrppa_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolExtensionFieldExtensionValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -1335,8 +1341,11 @@ dissect_nrppa_ProtocolExtensionContainer
 
 static int
 dissect_nrppa_T_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // PrivateIE-Field/value -> PrivateIE-Field/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type(tvb, offset, actx, tree, hf_index, NULL);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -1374,8 +1383,11 @@ dissect_nrppa_PrivateIE_Container(tvbuff
 
 static int
 dissect_nrppa_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // InitiatingMessage/value -> InitiatingMessage/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_InitiatingMessageValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -1400,8 +1412,11 @@ dissect_nrppa_InitiatingMessage(tvbuff_t
 
 static int
 dissect_nrppa_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // SuccessfulOutcome/value -> SuccessfulOutcome/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_SuccessfulOutcomeValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -1426,8 +1441,11 @@ dissect_nrppa_SuccessfulOutcome(tvbuff_t
 
 static int
 dissect_nrppa_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_UnsuccessfulOutcomeValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -1497,6 +1515,27 @@ dissect_nrppa_NULL(tvbuff_t *tvb _U_, in
   return offset;
 }
 
+/*--- Cyclic dependencies ---*/
+
+/* ProtocolIE-Field/value -> ProtocolIE-Field/value */
+static int dissect_nrppa_T_ie_field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue */
+static int dissect_nrppa_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* PrivateIE-Field/value -> PrivateIE-Field/value */
+static int dissect_nrppa_T_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* InitiatingMessage/value -> InitiatingMessage/value */
+static int dissect_nrppa_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* SuccessfulOutcome/value -> SuccessfulOutcome/value */
+static int dissect_nrppa_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value */
+static int dissect_nrppa_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+
 
 static const value_string nrppa_AbortTransmission_vals[] = {
   {   0, "deactivateSRSResourceSetID" },
Index: wireshark-3.6.24/epan/dissectors/packet-p1.c
===================================================================
--- wireshark-3.6.24.orig/epan/dissectors/packet-p1.c
+++ wireshark-3.6.24/epan/dissectors/packet-p1.c
@@ -1015,6 +1015,24 @@ dissect_p1_NULL(gboolean implicit_tag _U
   return offset;
 }
 
+/*--- Cyclic dependencies ---*/
+
+/* ExtensionAttribute/extension-attribute-value -> ExtensionAttribute/extension-attribute-value */
+static int dissect_p1_T_extension_attribute_value(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* PerDomainBilateralInformation/bilateral-information -> PerDomainBilateralInformation/bilateral-information */
+static int dissect_p1_T_bilateral_information(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* ExtensionField/value -> ExtensionField/value */
+static int dissect_p1_ExtensionValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* AdditionalInformation -> AdditionalInformation */
+static int dissect_p1_AdditionalInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* TokenData/value -> TokenData/value */
+static int dissect_p1_T_value(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+
 
 
 static int
@@ -2168,6 +2186,7 @@ static const ber_sequence_t BuiltInDomai
 
 static int
 dissect_p1_BuiltInDomainDefinedAttribute(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  increment_dissection_depth(actx->pinfo);
 #line 999 "./asn1/p1/p1.cnf"
 	actx->value_ptr = wmem_strbuf_new(actx->pinfo->pool, "");
 
@@ -2177,6 +2196,7 @@ dissect_p1_BuiltInDomainDefinedAttribute
 
 
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -2251,6 +2271,8 @@ dissect_p1_ExtensionAttributeType(gboole
 
 static int
 dissect_p1_T_extension_attribute_value(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // ExtensionAttribute/extension-attribute-value -> ExtensionAttribute/extension-attribute-value
+  increment_dissection_depth(actx->pinfo);
 #line 600 "./asn1/p1/p1.cnf"
 
 	proto_item_append_text(tree, " (%s)", val_to_str(actx->external.indirect_reference, p1_ExtensionAttributeType_vals, "extension-attribute-type %d"));
@@ -2270,7 +2292,7 @@ dissect_p1_T_extension_attribute_value(g
 
 
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -2764,6 +2786,7 @@ dissect_p1_PerMessageIndicators(gboolean
 
 static int
 dissect_p1_Time(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  increment_dissection_depth(actx->pinfo);
 #line 1148 "./asn1/p1/p1.cnf"
 	tvbuff_t *arrival = NULL;
 	p1_address_ctx_t* ctx = (p1_address_ctx_t*)actx->subtree.tree_ctx;
@@ -2776,6 +2799,7 @@ dissect_p1_Time(gboolean implicit_tag _U
 
 
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -2829,6 +2853,8 @@ dissect_p1_T_bilateral_domain(gboolean i
 
 static int
 dissect_p1_T_bilateral_information(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // PerDomainBilateralInformation/bilateral-information -> PerDomainBilateralInformation/bilateral-information
+  increment_dissection_depth(actx->pinfo);
 #line 1214 "./asn1/p1/p1.cnf"
 	proto_item *item = NULL;
 	int	    loffset = 0;
@@ -2845,7 +2871,7 @@ dissect_p1_T_bilateral_information(gbool
 	offset = dissect_unknown_ber(actx->pinfo, tvb, offset, tree);
 
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -3074,6 +3100,7 @@ static const value_string p1_StandardExt
 
 static int
 dissect_p1_StandardExtension(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  increment_dissection_depth(actx->pinfo);
 #line 633 "./asn1/p1/p1.cnf"
 	actx->external.indirect_ref_present = TRUE;
 	actx->external.direct_ref_present = FALSE;
@@ -3083,6 +3110,7 @@ dissect_p1_StandardExtension(gboolean im
 
 
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -3145,6 +3173,8 @@ dissect_p1_Criticality(gboolean implicit
 
 static int
 dissect_p1_ExtensionValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // ExtensionField/value -> ExtensionField/value
+  increment_dissection_depth(actx->pinfo);
 #line 560 "./asn1/p1/p1.cnf"
 	const char *name;
 
@@ -3169,7 +3199,7 @@ dissect_p1_ExtensionValue(gboolean impli
 
 
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -3522,7 +3552,9 @@ dissect_p1_SubjectIntermediateTraceInfor
 
 static int
 dissect_p1_AdditionalInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 542 "./asn1/p1/p1.cnf"
+  // AdditionalInformation -> AdditionalInformation
+  increment_dissection_depth(actx->pinfo);
+  #line 542 "./asn1/p1/p1.cnf"
    proto_item *item = NULL;
    int         loffset = 0;
    guint32     len = 0;
@@ -3539,6 +3571,7 @@ dissect_p1_AdditionalInformation(gboolea
 
 
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -7192,6 +7225,7 @@ static const ber_sequence_t MTANameAndOp
 
 static int
 dissect_p1_MTANameAndOptionalGDI(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  increment_dissection_depth(actx->pinfo);
 #line 1097 "./asn1/p1/p1.cnf"
 
 	set_do_address(actx, TRUE);
@@ -7205,6 +7239,7 @@ dissect_p1_MTANameAndOptionalGDI(gboolea
 
 
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -7252,6 +7287,8 @@ dissect_p1_TokenDataType(gboolean implic
 
 static int
 dissect_p1_T_value(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // TokenData/value -> TokenData/value
+  increment_dissection_depth(actx->pinfo);
 #line 1199 "./asn1/p1/p1.cnf"
 
 	proto_item_append_text(tree, " (%s)", val_to_str(actx->external.indirect_reference, p1_TokenDataType_vals, "tokendata-type %d"));
@@ -7268,7 +7305,7 @@ dissect_p1_T_value(gboolean implicit_tag
 	}
 
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
Index: wireshark-3.6.24/epan/dissectors/packet-p22.c
===================================================================
--- wireshark-3.6.24.orig/epan/dissectors/packet-p22.c
+++ wireshark-3.6.24/epan/dissectors/packet-p22.c
@@ -850,9 +850,21 @@ static gint ett_p22_T_choice = -1;
 #line 1 "./asn1/p22/packet-p22-fn.c"
 /*--- Cyclic dependencies ---*/
 
+/* IPMSExtension/value -> IPMSExtension/value */
+static int dissect_p22_T_value(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
 /* IPM -> Body -> BodyPart -> BodyPart/basic -> MessageBodyPart -> MessageData -> IPM */
 /*int dissect_p22_IPM(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);*/
 
+/* NationallyDefinedBodyPart -> NationallyDefinedBodyPart */
+static int dissect_p22_NationallyDefinedBodyPart(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* Contents-Type-Attribute/document-type/parameter -> Contents-Type-Attribute/document-type/parameter */
+static int dissect_p22_T_parameter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* CompressionParameter/compression-algorithm-param -> CompressionParameter/compression-algorithm-param */
+static int dissect_p22_T_compression_algorithm_param(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
 /* IPMSynopsis -> BodyPartSynopsis -> MessageBodyPartSynopsis -> IPMSynopsis */
 static int dissect_p22_IPMSynopsis(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
 
@@ -1036,12 +1048,14 @@ dissect_p22_T_type(gboolean implicit_tag
 
 static int
 dissect_p22_T_value(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // IPMSExtension/value -> IPMSExtension/value
+  increment_dissection_depth(actx->pinfo);
 #line 239 "./asn1/p22/p22.cnf"
 
   offset=call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL);
 
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -1721,11 +1735,13 @@ dissect_p22_BilaterallyDefinedBodyPart(g
 
 static int
 dissect_p22_NationallyDefinedBodyPart(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // NationallyDefinedBodyPart -> NationallyDefinedBodyPart
+  increment_dissection_depth(actx->pinfo);
 #line 293 "./asn1/p22/p22.cnf"
 /* XXX Not implemented yet */
 
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -2937,11 +2953,13 @@ dissect_p22_Document_Type_Name(gboolean
 
 static int
 dissect_p22_T_parameter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // Contents-Type-Attribute/document-type/parameter -> Contents-Type-Attribute/document-type/parameter
+  increment_dissection_depth(actx->pinfo);
 #line 296 "./asn1/p22/p22.cnf"
 /* XXX: Not implemented yet */
 
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -3105,14 +3123,16 @@ dissect_p22_T_compression_algorithm_id(g
 
 static int
 dissect_p22_T_compression_algorithm_param(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // CompressionParameter/compression-algorithm-param -> CompressionParameter/compression-algorithm-param
+  increment_dissection_depth(actx->pinfo);
 #line 302 "./asn1/p22/p22.cnf"
 /* XXX: Not implemented yet */
 
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
-}
 
+}
 
 static const ber_sequence_t CompressionParameter_sequence[] = {
   { &hf_p22_compression_algorithm_id, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_p22_T_compression_algorithm_id },
Index: wireshark-3.6.24/epan/dissectors/packet-p7.c
===================================================================
--- wireshark-3.6.24.orig/epan/dissectors/packet-p7.c
+++ wireshark-3.6.24/epan/dissectors/packet-p7.c
@@ -668,12 +668,44 @@ static const value_string p7_err_code_st
 /*--- Included file: packet-p7-fn.c ---*/
 #line 1 "./asn1/p7/packet-p7-fn.c"
 /*--- Cyclic dependencies ---*/
+/* Attribute/attribute-values/_item -> Attribute/attribute-values/_item */
+static int dissect_p7_AttributeItem(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* AutoActionRegistration/registration-parameter -> AutoActionRegistration/registration-parameter */
+static int dissect_p7_T_registration_parameter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* AttributeValueAssertion/attribute-value -> AttributeValueAssertion/attribute-value */
+static int dissect_p7_T_attribute_value(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* FilterItem/substrings/strings/_item/initial -> FilterItem/substrings/strings/_item/initial */
+static int dissect_p7_T_initial(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* FilterItem/substrings/strings/_item/any -> FilterItem/substrings/strings/_item/any */
+static int dissect_p7_T_any(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* FilterItem/substrings/strings/_item/final -> FilterItem/substrings/strings/_item/final */
+static int dissect_p7_T_final(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* MatchingRuleAssertion/match-value -> MatchingRuleAssertion/match-value */
+static int dissect_p7_T_match_value(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
 
 /* Filter -> Filter/and -> Filter */
 /* Filter -> Filter */
 static int dissect_p7_Filter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
 
+/* Summary/present/_item/value -> Summary/present/_item/value */
+static int dissect_p7_SummaryPresentItemValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
 
+/* OrderedAttribute/attribute-values/_item/value -> OrderedAttribute/attribute-values/_item/value */
+static int dissect_p7_OrderedAttributeValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* PAR-attribute-error/problems/_item/value -> PAR-attribute-error/problems/_item/value */
+static int dissect_p7_T_attr_value(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* RTABapdu/userdataAB -> RTABapdu/userdataAB */
+static int dissect_p7_T_userdataAB(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+ 
 
 
 static int
@@ -687,10 +719,12 @@ dissect_p7_AttributeType(gboolean implic
 
 static int
 dissect_p7_AttributeItem(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-	if(actx->external.direct_reference)
+  // Attribute/attribute-values/_item -> Attribute/attribute-values/_item
+  increment_dissection_depth(actx->pinfo);
+  if(actx->external.direct_reference)
 		call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL);
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -745,11 +779,13 @@ dissect_p7_INTEGER_1_ub_per_auto_action(
 
 static int
 dissect_p7_T_registration_parameter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-	if(actx->external.direct_reference)
+  // AutoActionRegistration/registration-parameter -> AutoActionRegistration/registration-parameter
+  increment_dissection_depth(actx->pinfo);
+  if(actx->external.direct_reference)
 		call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL);
 
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -1390,10 +1426,12 @@ dissect_p7_Range(gboolean implicit_tag _
 
 static int
 dissect_p7_T_attribute_value(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-	if(actx->external.direct_reference)
+  // AttributeValueAssertion/attribute-value -> AttributeValueAssertion/attribute-value
+  increment_dissection_depth(actx->pinfo);
+  if(actx->external.direct_reference)
 		call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL);
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -1416,10 +1454,12 @@ dissect_p7_AttributeValueAssertion(gbool
 
 static int
 dissect_p7_T_initial(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-	if(actx->external.direct_reference)
+  // FilterItem/substrings/strings/_item/initial -> FilterItem/substrings/strings/_item/initial
+  increment_dissection_depth(actx->pinfo);
+  if(actx->external.direct_reference)
 		call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL);
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -1427,10 +1467,12 @@ dissect_p7_T_initial(gboolean implicit_t
 
 static int
 dissect_p7_T_any(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-	if(actx->external.direct_reference)
+  // FilterItem/substrings/strings/_item/any -> FilterItem/substrings/strings/_item/any
+  increment_dissection_depth(actx->pinfo);
+  if(actx->external.direct_reference)
 		call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL);
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -1438,10 +1480,12 @@ dissect_p7_T_any(gboolean implicit_tag _
 
 static int
 dissect_p7_T_final(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-	if(actx->external.direct_reference)
+  // FilterItem/substrings/strings/_item/final -> FilterItem/substrings/strings/_item/final
+  increment_dissection_depth(actx->pinfo);
+  if(actx->external.direct_reference)
 		call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL);
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -1501,10 +1545,12 @@ dissect_p7_T_substrings(gboolean implici
 
 static int
 dissect_p7_T_match_value(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-	if(actx->external.direct_reference)
+  // MatchingRuleAssertion/match-value -> MatchingRuleAssertion/match-value
+  increment_dissection_depth(actx->pinfo);
+  if(actx->external.direct_reference)
 		call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL);
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -1875,10 +1921,12 @@ dissect_p7_Span(gboolean implicit_tag _U
 
 static int
 dissect_p7_SummaryPresentItemValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-	if(actx->external.direct_reference)
+  // Summary/present/_item/value -> Summary/present/_item/value
+  increment_dissection_depth(actx->pinfo);
+  if(actx->external.direct_reference)
 		call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL);
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -2591,10 +2639,12 @@ dissect_p7_T_entries(gboolean implicit_t
 
 static int
 dissect_p7_OrderedAttributeValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-	if(actx->external.direct_reference)
+  // OrderedAttribute/attribute-values/_item/value -> OrderedAttribute/attribute-values/_item/value
+  increment_dissection_depth(actx->pinfo);
+  if(actx->external.direct_reference)
 		call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL);
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -3670,9 +3720,11 @@ dissect_p7_AbortReason(gboolean implicit
 
 static int
 dissect_p7_T_userdataAB(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-	offset = dissect_unknown_ber(actx->pinfo, tvb, offset, tree);
-
+  // RTABapdu/userdataAB -> RTABapdu/userdataAB
+  increment_dissection_depth(actx->pinfo);
+  offset = dissect_unknown_ber(actx->pinfo, tvb, offset, tree);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
Index: wireshark-3.6.24/epan/dissectors/packet-pcap.c
===================================================================
--- wireshark-3.6.24.orig/epan/dissectors/packet-pcap.c
+++ wireshark-3.6.24/epan/dissectors/packet-pcap.c
@@ -1988,6 +1988,30 @@ static int dissect_SuccessfulOutcomeValu
 static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *);
 static int dissect_OutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *);
 
+/*--- Cyclic dependencies ---*/
+
+/* ProtocolIE-Field/value -> ProtocolIE-Field/value */
+static int dissect_pcap_T_ie_field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue */
+static int dissect_pcap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* PrivateIE-Field/value -> PrivateIE-Field/value */
+static int dissect_pcap_T_private_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* InitiatingMessage/value -> InitiatingMessage/value */
+static int dissect_pcap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* SuccessfulOutcome/value -> SuccessfulOutcome/value */
+static int dissect_pcap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value */
+static int dissect_pcap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* Outcome/value -> Outcome/value */
+static int dissect_pcap_Outcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+
 
 /*--- Included file: packet-pcap-fn.c ---*/
 #line 1 "./asn1/pcap/packet-pcap-fn.c"
@@ -2302,8 +2326,11 @@ dissect_pcap_TriggeringMessage(tvbuff_t
 
 static int
 dissect_pcap_T_ie_field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // ProtocolIE-Field/value -> ProtocolIE-Field/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolIEFieldValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -2350,8 +2377,11 @@ dissect_pcap_ProtocolIE_Single_Container
 
 static int
 dissect_pcap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolExtensionFieldExtensionValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -2389,8 +2419,11 @@ dissect_pcap_ProtocolExtensionContainer(
 
 static int
 dissect_pcap_T_private_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // PrivateIE-Field/value -> PrivateIE-Field/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type(tvb, offset, actx, tree, hf_index, NULL);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -13364,8 +13397,11 @@ dissect_pcap_PositionPeriodicTermination
 
 static int
 dissect_pcap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // InitiatingMessage/value -> InitiatingMessage/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_InitiatingMessageValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -13390,8 +13426,11 @@ dissect_pcap_InitiatingMessage(tvbuff_t
 
 static int
 dissect_pcap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // SuccessfulOutcome/value -> SuccessfulOutcome/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_SuccessfulOutcomeValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -13416,8 +13455,11 @@ dissect_pcap_SuccessfulOutcome(tvbuff_t
 
 static int
 dissect_pcap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_UnsuccessfulOutcomeValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -13442,8 +13484,11 @@ dissect_pcap_UnsuccessfulOutcome(tvbuff_
 
 static int
 dissect_pcap_Outcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // Outcome/value -> Outcome/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_OutcomeValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
Index: wireshark-3.6.24/epan/dissectors/packet-q932-ros.c
===================================================================
--- wireshark-3.6.24.orig/epan/dissectors/packet-q932-ros.c
+++ wireshark-3.6.24/epan/dissectors/packet-q932-ros.c
@@ -98,6 +98,18 @@ static guint32 problem_val;
 static gchar problem_str[64];
 static tvbuff_t *arg_next_tvb, *res_next_tvb, *err_next_tvb;
 
+/*--- Cyclic dependencies ---*/
+
+/* Invoke/argument -> Invoke/argument */
+static int dissect_q932_ros_InvokeArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* ReturnResult/result/result -> ReturnResult/result/result */
+static int dissect_q932_ros_ResultArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* ReturnError/parameter -> ReturnError/parameter */
+static int dissect_q932_ros_T_parameter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+
 
 
 /*--- Included file: packet-q932-ros-fn.c ---*/
@@ -232,6 +244,8 @@ dissect_q932_ros_T_linkedId(gboolean imp
 
 static int
 dissect_q932_ros_InvokeArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // Invoke/argument -> Invoke/argument
+  increment_dissection_depth(actx->pinfo);
 #line 68 "./asn1/q932-ros/q932-ros.cnf"
   gint len;
 
@@ -243,6 +257,7 @@ dissect_q932_ros_InvokeArgument(gboolean
   offset += tvb_reported_length_remaining(tvb, offset);
 
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -310,6 +325,8 @@ dissect_q932_ros_Invoke(gboolean implici
 
 static int
 dissect_q932_ros_ResultArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // ReturnResult/result/result -> ReturnResult/result/result
+  increment_dissection_depth(actx->pinfo);
 #line 86 "./asn1/q932-ros/q932-ros.cnf"
   gint len;
 
@@ -321,7 +338,7 @@ dissect_q932_ros_ResultArgument(gboolean
   offset += tvb_reported_length_remaining(tvb, offset);
 
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -405,6 +422,8 @@ dissect_q932_ros_ReturnResult(gboolean i
 
 static int
 dissect_q932_ros_T_parameter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // ReturnError/parameter -> ReturnError/parameter
+  increment_dissection_depth(actx->pinfo);
 #line 105 "./asn1/q932-ros/q932-ros.cnf"
 
   gint len;
@@ -417,6 +436,7 @@ dissect_q932_ros_T_parameter(gboolean im
   offset += tvb_reported_length_remaining(tvb, offset);
 
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -490,12 +510,15 @@ static const value_string q932_ros_Gener
 
 static int
 dissect_q932_ros_GeneralProblem(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  increment_dissection_depth(actx->pinfo);
+
   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                                 &problem_val);
 
 #line 53 "./asn1/q932-ros/q932-ros.cnf"
   (void) g_strlcpy(problem_str, val_to_str_const(problem_val, VALS(q932_ros_GeneralProblem_vals), ""), 64);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
Index: wireshark-3.6.24/epan/dissectors/packet-qsig.c
===================================================================
--- wireshark-3.6.24.orig/epan/dissectors/packet-qsig.c
+++ wireshark-3.6.24/epan/dissectors/packet-qsig.c
@@ -2056,6 +2056,12 @@ static dissector_table_t extension_disse
 
 /* --- Modules Manufacturer-specific-service-extension-class-asn1-97 PSS1-generic-parameters-definition-asn1-97 Addressing-Data-Elements-asn1-97 --- --- --- */
 
+/*--- Cyclic dependencies ---*/
+
+/* Extension/extensionArgument -> Extension/extensionArgument */
+static int dissect_qsig_T_extensionArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+
 
 
 static int
@@ -2069,6 +2075,7 @@ dissect_qsig_T_extensionId(gboolean impl
 
 static int
 dissect_qsig_T_extensionArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  increment_dissection_depth(actx->pinfo);
 #line 146 "./asn1/qsig/qsig.cnf"
     tvbuff_t *next_tvb;
 
@@ -2085,6 +2092,7 @@ dissect_qsig_T_extensionArgument(gboolea
     offset+=tvb_reported_length_remaining(tvb, offset);
 
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -8967,6 +8975,12 @@ static int dissect_qsig_wtmch_Extension_
 
 /* --- Module WTM-Authentication-Operations-asn1-97 --- --- ---               */
 
+/*--- Cyclic dependencies ---*/
+
+/* AuthAlgorithm/param -> AuthAlgorithm/param */
+static int dissect_qsig_wtmau_T_param(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+
 
 
 static int
@@ -9203,10 +9217,12 @@ dissect_qsig_wtmau_DefinedIDs(gboolean i
 
 static int
 dissect_qsig_wtmau_T_param(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 162 "./asn1/qsig/qsig.cnf"
-
+  // AuthAlgorithm/param -> AuthAlgorithm/param
+  increment_dissection_depth(actx->pinfo);
+ #line 162 "./asn1/qsig/qsig.cnf"
 
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
Index: wireshark-3.6.24/epan/dissectors/packet-ranap.c
===================================================================
--- wireshark-3.6.24.orig/epan/dissectors/packet-ranap.c
+++ wireshark-3.6.24/epan/dissectors/packet-ranap.c
@@ -1743,6 +1743,36 @@ static int dissect_OutcomeValue(tvbuff_t
 static int dissect_ranap_SourceRNC_ToTargetRNC_TransparentContainer(tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index);
 static int dissect_ranap_TargetRNC_ToSourceRNC_TransparentContainer(tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index);
 
+/*--- Cyclic dependencies ---*/
+
+/* ProtocolIE-Field/value -> ProtocolIE-Field/value */
+static int dissect_ranap_T_ie_field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* ProtocolIE-FieldPair/firstValue -> ProtocolIE-FieldPair/firstValue */
+static int dissect_ranap_T_firstValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* ProtocolIE-FieldPair/secondValue -> ProtocolIE-FieldPair/secondValue */
+static int dissect_ranap_T_secondValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue */
+static int dissect_ranap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* PrivateIE-Field/value -> PrivateIE-Field/value */
+static int dissect_ranap_T_private_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* InitiatingMessage/value -> InitiatingMessage/value */
+static int dissect_ranap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* SuccessfulOutcome/value -> SuccessfulOutcome/value */
+static int dissect_ranap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value */
+static int dissect_ranap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* Outcome/value -> Outcome/value */
+static int dissect_ranap_T_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+
 
 
 /*--- Included file: packet-ranap-fn.c ---*/
@@ -2222,8 +2252,11 @@ dissect_ranap_TriggeringMessage(tvbuff_t
 
 static int
 dissect_ranap_T_ie_field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // ProtocolIE-Field/value -> ProtocolIE-Field/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolIEFieldValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -2261,8 +2294,11 @@ dissect_ranap_ProtocolIE_Container(tvbuf
 
 static int
 dissect_ranap_T_firstValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // ProtocolIE-FieldPair/firstValue -> ProtocolIE-FieldPair/firstValue
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolIEFieldPairFirstValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -2270,8 +2306,11 @@ dissect_ranap_T_firstValue(tvbuff_t *tvb
 
 static int
 dissect_ranap_T_secondValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // ProtocolIE-FieldPair/secondValue -> ProtocolIE-FieldPair/secondValue
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolIEFieldPairSecondValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -2355,8 +2394,11 @@ dissect_ranap_ProtocolIE_ContainerPairLi
 
 static int
 dissect_ranap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolExtensionFieldExtensionValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -2394,8 +2436,11 @@ dissect_ranap_ProtocolExtensionContainer
 
 static int
 dissect_ranap_T_private_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // PrivateIE-Field/value -> PrivateIE-Field/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type(tvb, offset, actx, tree, hf_index, NULL);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -12193,8 +12238,11 @@ col_set_str(actx->pinfo->cinfo, COL_INFO
 
 static int
 dissect_ranap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // InitiatingMessage/value -> InitiatingMessage/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_InitiatingMessageValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -12218,8 +12266,11 @@ dissect_ranap_InitiatingMessage(tvbuff_t
 
 static int
 dissect_ranap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // SuccessfulOutcome/value -> SuccessfulOutcome/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_SuccessfulOutcomeValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -12243,8 +12294,11 @@ dissect_ranap_SuccessfulOutcome(tvbuff_t
 
 static int
 dissect_ranap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_UnsuccessfulOutcomeValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -12268,8 +12322,11 @@ dissect_ranap_UnsuccessfulOutcome(tvbuff
 
 static int
 dissect_ranap_T_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // Outcome/value -> Outcome/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_OutcomeValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
Index: wireshark-3.6.24/epan/dissectors/packet-rnsap.c
===================================================================
--- wireshark-3.6.24.orig/epan/dissectors/packet-rnsap.c
+++ wireshark-3.6.24/epan/dissectors/packet-rnsap.c
@@ -5838,6 +5838,30 @@ static gint ett_rnsap_Outcome = -1;
 /*--- End of included file: packet-rnsap-ett.c ---*/
 #line 69 "./asn1/rnsap/packet-rnsap-template.c"
 
+/*--- Cyclic dependencies ---*/
+
+/* ProtocolIE-Field/value -> ProtocolIE-Field/value */
+static int dissect_rnsap_ProtocolIE_Field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue */
+static int dissect_rnsap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* PrivateIE-Field/value -> PrivateIE-Field/value */
+static int dissect_rnsap_PrivateIE_Field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* InitiatingMessage/value -> InitiatingMessage/value */
+static int dissect_rnsap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* SuccessfulOutcome/value -> SuccessfulOutcome/value */
+static int dissect_rnsap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value */
+static int dissect_rnsap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* Outcome/value -> Outcome/value */
+static int dissect_rnsap_Outcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+
 
 /* Dissector tables */
 static dissector_table_t rnsap_ies_dissector_table;
@@ -7136,8 +7160,11 @@ dissect_rnsap_TriggeringMessage(tvbuff_t
 
 static int
 dissect_rnsap_ProtocolIE_Field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // ProtocolIE-Field/value -> ProtocolIE-Field/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolIEFieldValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -7184,8 +7211,11 @@ dissect_rnsap_ProtocolIE_Single_Containe
 
 static int
 dissect_rnsap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolExtensionFieldExtensionValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -7223,8 +7253,11 @@ dissect_rnsap_ProtocolExtensionContainer
 
 static int
 dissect_rnsap_PrivateIE_Field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // PrivateIE-Field/value -> PrivateIE-Field/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_PrivateIEFieldValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -42159,8 +42192,11 @@ dissect_rnsap_Control_Type_InformationTr
 
 static int
 dissect_rnsap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // InitiatingMessage/value -> InitiatingMessage/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_InitiatingMessageValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -42185,8 +42221,11 @@ dissect_rnsap_InitiatingMessage(tvbuff_t
 
 static int
 dissect_rnsap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // SuccessfulOutcome/value -> SuccessfulOutcome/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_SuccessfulOutcomeValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -42211,8 +42250,11 @@ dissect_rnsap_SuccessfulOutcome(tvbuff_t
 
 static int
 dissect_rnsap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_UnsuccessfulOutcomeValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -42237,8 +42279,11 @@ dissect_rnsap_UnsuccessfulOutcome(tvbuff
 
 static int
 dissect_rnsap_Outcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // Outcome/value -> Outcome/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type(tvb, offset, actx, tree, hf_index, NULL);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
Index: wireshark-3.6.24/epan/dissectors/packet-rrlp.c
===================================================================
--- wireshark-3.6.24.orig/epan/dissectors/packet-rrlp.c
+++ wireshark-3.6.24/epan/dissectors/packet-rrlp.c
@@ -1148,6 +1148,12 @@ static gint ett_rrlp_AssistanceNeeded =
 /*--- End of included file: packet-rrlp-val.h ---*/
 #line 50 "./asn1/rrlp/packet-rrlp-template.c"
 
+/*--- Cyclic dependencies ---*/
+
+/* PrivateExtension/extType -> PrivateExtension/extType */
+static int dissect_rrlp_T_extType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+
 
 
 /*--- Included file: packet-rrlp-fn.c ---*/
@@ -1165,8 +1171,11 @@ dissect_rrlp_OBJECT_IDENTIFIER(tvbuff_t
 
 static int
 dissect_rrlp_T_extType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // PrivateExtension/extType -> PrivateExtension/extType
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type(tvb, offset, actx, tree, hf_index, NULL);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
Index: wireshark-3.6.24/epan/dissectors/packet-rua.c
===================================================================
--- wireshark-3.6.24.orig/epan/dissectors/packet-rua.c
+++ wireshark-3.6.24/epan/dissectors/packet-rua.c
@@ -220,6 +220,27 @@ static int dissect_UnsuccessfulOutcomeVa
 
 void proto_reg_handoff_rua(void);
 
+/*--- Cyclic dependencies ---*/
+
+/* ProtocolIE-Field/value -> ProtocolIE-Field/value */
+static int dissect_rua_ProtocolIE_Field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue */
+static int dissect_rua_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* PrivateIE-Field/value -> PrivateIE-Field/value */
+static int dissect_rua_PrivateIE_Field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* InitiatingMessage/value -> InitiatingMessage/value */
+static int dissect_rua_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* SuccessfulOutcome/value -> SuccessfulOutcome/value */
+static int dissect_rua_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value */
+static int dissect_rua_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+
 
 /*--- Included file: packet-rua-fn.c ---*/
 #line 1 "./asn1/rua/packet-rua-fn.c"
@@ -356,8 +377,11 @@ dissect_rua_TriggeringMessage(tvbuff_t *
 
 static int
 dissect_rua_ProtocolIE_Field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // ProtocolIE-Field/value -> ProtocolIE-Field/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolIEFieldValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -395,8 +419,11 @@ dissect_rua_ProtocolIE_Container(tvbuff_
 
 static int
 dissect_rua_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolExtensionFieldExtensionValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -434,8 +461,11 @@ dissect_rua_ProtocolExtensionContainer(t
 
 static int
 dissect_rua_PrivateIE_Field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // PrivateIE-Field/value -> PrivateIE-Field/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type(tvb, offset, actx, tree, hf_index, NULL);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -1127,8 +1157,11 @@ dissect_rua_PrivateMessage(tvbuff_t *tvb
 
 static int
 dissect_rua_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // InitiatingMessage/value -> InitiatingMessage/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_InitiatingMessageValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -1152,8 +1185,11 @@ dissect_rua_InitiatingMessage(tvbuff_t *
 
 static int
 dissect_rua_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // SuccessfulOutcome/value -> SuccessfulOutcome/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_SuccessfulOutcomeValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -1177,8 +1213,11 @@ dissect_rua_SuccessfulOutcome(tvbuff_t *
 
 static int
 dissect_rua_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_UnsuccessfulOutcomeValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
Index: wireshark-3.6.24/epan/dissectors/packet-s1ap.c
===================================================================
--- wireshark-3.6.24.orig/epan/dissectors/packet-s1ap.c
+++ wireshark-3.6.24/epan/dissectors/packet-s1ap.c
@@ -2242,6 +2242,27 @@ dissect_s1ap_PrivateIE_ID(tvbuff_t *tvb
   return offset;
 }
 
+/*--- Cyclic dependencies ---*/
+
+/* ProtocolIE-Field/value -> ProtocolIE-Field/value */
+static int dissect_s1ap_T_ie_field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue */
+static int dissect_s1ap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* PrivateIE-Field/value -> PrivateIE-Field/value */
+static int dissect_s1ap_T_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* InitiatingMessage/value -> InitiatingMessage/value */
+static int dissect_s1ap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* SuccessfulOutcome/value -> SuccessfulOutcome/value */
+static int dissect_s1ap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value */
+static int dissect_s1ap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+
 
 static const value_string s1ap_ProcedureCode_vals[] = {
   { id_HandoverPreparation, "id-HandoverPreparation" },
@@ -2719,8 +2740,11 @@ dissect_s1ap_TriggeringMessage(tvbuff_t
 
 static int
 dissect_s1ap_T_ie_field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // ProtocolIE-Field/value -> ProtocolIE-Field/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolIEFieldValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -2789,8 +2813,11 @@ dissect_s1ap_ProtocolIE_ContainerList(tv
 
 static int
 dissect_s1ap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolExtensionFieldExtensionValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -2828,6 +2855,8 @@ dissect_s1ap_ProtocolExtensionContainer(
 
 static int
 dissect_s1ap_T_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // PrivateIE-Field/value -> PrivateIE-Field/value
+  increment_dissection_depth(actx->pinfo);
 #line 235 "./asn1/s1ap/s1ap.cnf"
   struct s1ap_private_data *s1ap_data = s1ap_get_private_data(actx->pinfo);
   if (s1ap_data->obj_id) {
@@ -2841,6 +2870,7 @@ dissect_s1ap_T_value(tvbuff_t *tvb _U_,
 
 
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -13842,12 +13872,15 @@ dissect_s1ap_UERadioCapabilityIDMappingR
 
 static int
 dissect_s1ap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 151 "./asn1/s1ap/s1ap.cnf"
+  // InitiatingMessage/value -> InitiatingMessage/value
+  increment_dissection_depth(actx->pinfo);
+  #line 151 "./asn1/s1ap/s1ap.cnf"
   struct s1ap_private_data *s1ap_data = s1ap_get_private_data(actx->pinfo);
   s1ap_data->message_type = INITIATING_MESSAGE;
 
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_InitiatingMessageValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -13871,12 +13904,15 @@ dissect_s1ap_InitiatingMessage(tvbuff_t
 
 static int
 dissect_s1ap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // SuccessfulOutcome/value -> SuccessfulOutcome/value
+  increment_dissection_depth(actx->pinfo);
 #line 155 "./asn1/s1ap/s1ap.cnf"
   struct s1ap_private_data *s1ap_data = s1ap_get_private_data(actx->pinfo);
   s1ap_data->message_type = SUCCESSFUL_OUTCOME;
 
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_SuccessfulOutcomeValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -13900,6 +13936,8 @@ dissect_s1ap_SuccessfulOutcome(tvbuff_t
 
 static int
 dissect_s1ap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value
+  increment_dissection_depth(actx->pinfo);
 #line 159 "./asn1/s1ap/s1ap.cnf"
   struct s1ap_private_data *s1ap_data = s1ap_get_private_data(actx->pinfo);
   s1ap_data->message_type = UNSUCCESSFUL_OUTCOME;
@@ -13909,6 +13947,7 @@ dissect_s1ap_UnsuccessfulOutcome_value(t
 
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_UnsuccessfulOutcomeValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
Index: wireshark-3.6.24/epan/dissectors/packet-sabp.c
===================================================================
--- wireshark-3.6.24.orig/epan/dissectors/packet-sabp.c
+++ wireshark-3.6.24/epan/dissectors/packet-sabp.c
@@ -262,6 +262,24 @@ static int dissect_SuccessfulOutcomeValu
 static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *);
 static void dissect_sabp_cb_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
 
+/*--- Cyclic dependencies ---*/
+
+/* ProtocolIE-Field/value -> ProtocolIE-Field/value */
+static int dissect_sabp_ProtocolIE_Field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue */
+static int dissect_sabp_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* InitiatingMessage/value -> InitiatingMessage/value */
+static int dissect_sabp_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* SuccessfulOutcome/value -> SuccessfulOutcome/value */
+static int dissect_sabp_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value */
+static int dissect_sabp_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+
 
 /*--- Included file: packet-sabp-fn.c ---*/
 #line 1 "./asn1/sabp/packet-sabp-fn.c"
@@ -386,8 +404,11 @@ dissect_sabp_TriggeringMessage(tvbuff_t
 
 static int
 dissect_sabp_ProtocolIE_Field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // ProtocolIE-Field/value -> ProtocolIE-Field/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolIEFieldValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -425,8 +446,11 @@ dissect_sabp_ProtocolIE_Container(tvbuff
 
 static int
 dissect_sabp_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolExtensionFieldExtensionValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -1289,8 +1313,11 @@ dissect_sabp_Error_Indication(tvbuff_t *
 
 static int
 dissect_sabp_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // InitiatingMessage/value -> InitiatingMessage/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_InitiatingMessageValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -1314,8 +1341,11 @@ dissect_sabp_InitiatingMessage(tvbuff_t
 
 static int
 dissect_sabp_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // SuccessfulOutcome/value -> SuccessfulOutcome/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_SuccessfulOutcomeValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -1339,8 +1369,11 @@ dissect_sabp_SuccessfulOutcome(tvbuff_t
 
 static int
 dissect_sabp_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_UnsuccessfulOutcomeValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
Index: wireshark-3.6.24/epan/dissectors/packet-sbc-ap.c
===================================================================
--- wireshark-3.6.24.orig/epan/dissectors/packet-sbc-ap.c
+++ wireshark-3.6.24/epan/dissectors/packet-sbc-ap.c
@@ -432,6 +432,24 @@ static int dissect_InitiatingMessageValu
 static int dissect_SuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *);
 static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *);
 
+/*--- Cyclic dependencies ---*/
+
+/* ProtocolIE-Field/value -> ProtocolIE-Field/value */
+static int dissect_sbc_ap_T_ie_field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue */
+static int dissect_sbc_ap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* InitiatingMessage/value -> InitiatingMessage/value */
+static int dissect_sbc_ap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* SuccessfulOutcome/value -> SuccessfulOutcome/value */
+static int dissect_sbc_ap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value */
+static int dissect_sbc_ap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+
 
 static struct sbc_ap_private_data*
 sbc_ap_get_private_data(packet_info *pinfo)
@@ -583,8 +601,11 @@ dissect_sbc_ap_TriggeringMessage(tvbuff_
 
 static int
 dissect_sbc_ap_T_ie_field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // ProtocolIE-Field/value -> ProtocolIE-Field/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolIEFieldValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -622,8 +643,11 @@ dissect_sbc_ap_ProtocolIE_Container(tvbu
 
 static int
 dissect_sbc_ap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolExtensionFieldExtensionValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -2360,8 +2384,11 @@ dissect_sbc_ap_Error_Indication(tvbuff_t
 
 static int
 dissect_sbc_ap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // InitiatingMessage/value -> InitiatingMessage/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_InitiatingMessageValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -2385,8 +2412,11 @@ dissect_sbc_ap_InitiatingMessage(tvbuff_
 
 static int
 dissect_sbc_ap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // SuccessfulOutcome/value -> SuccessfulOutcome/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_SuccessfulOutcomeValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -2410,8 +2440,11 @@ dissect_sbc_ap_SuccessfulOutcome(tvbuff_
 
 static int
 dissect_sbc_ap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_UnsuccessfulOutcomeValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
Index: wireshark-3.6.24/epan/dissectors/packet-x2ap.c
===================================================================
--- wireshark-3.6.24.orig/epan/dissectors/packet-x2ap.c
+++ wireshark-3.6.24/epan/dissectors/packet-x2ap.c
@@ -2762,6 +2762,27 @@ dissect_x2ap_ProcedureCode(tvbuff_t *tvb
   return offset;
 }
 
+/*--- Cyclic dependencies ---*/
+
+/* ProtocolIE-Field/value -> ProtocolIE-Field/value */
+static int dissect_x2ap_ProtocolIE_Field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue */
+static int dissect_x2ap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* PrivateIE-Field/value -> PrivateIE-Field/value */
+static int dissect_x2ap_PrivateIE_Field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* InitiatingMessage/value -> InitiatingMessage/value */
+static int dissect_x2ap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* SuccessfulOutcome/value -> SuccessfulOutcome/value */
+static int dissect_x2ap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value */
+static int dissect_x2ap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+
 
 static const value_string x2ap_ProtocolIE_ID_vals[] = {
   { id_E_RABs_Admitted_Item, "id-E-RABs-Admitted-Item" },
@@ -3217,8 +3238,11 @@ dissect_x2ap_TriggeringMessage(tvbuff_t
 
 static int
 dissect_x2ap_ProtocolIE_Field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // ProtocolIE-Field/value -> ProtocolIE-Field/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolIEFieldValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -3265,8 +3289,11 @@ dissect_x2ap_ProtocolIE_Single_Container
 
 static int
 dissect_x2ap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolExtensionFieldExtensionValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -3304,8 +3331,11 @@ dissect_x2ap_ProtocolExtensionContainer(
 
 static int
 dissect_x2ap_PrivateIE_Field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // PrivateIE-Field/value -> PrivateIE-Field/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type(tvb, offset, actx, tree, hf_index, NULL);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -6749,6 +6779,8 @@ dissect_x2ap_E_RABUsageReportList(tvbuff
 
 static int
 dissect_x2ap_T_startTimeStamp(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  increment_dissection_depth(actx->pinfo);
+
 #line 621 "./asn1/x2ap/x2ap.cnf"
   tvbuff_t *timestamp_tvb = NULL;
   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
@@ -6763,6 +6795,7 @@ dissect_x2ap_T_startTimeStamp(tvbuff_t *
   }
 
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -18222,8 +18255,11 @@ dissect_x2ap_UERadioCapabilityIDMappingR
 
 static int
 dissect_x2ap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // InitiatingMessage/value -> InitiatingMessage/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_InitiatingMessageValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -18247,8 +18283,11 @@ dissect_x2ap_InitiatingMessage(tvbuff_t
 
 static int
 dissect_x2ap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // SuccessfulOutcome/value -> SuccessfulOutcome/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_SuccessfulOutcomeValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -18272,8 +18311,11 @@ dissect_x2ap_SuccessfulOutcome(tvbuff_t
 
 static int
 dissect_x2ap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_UnsuccessfulOutcomeValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
Index: wireshark-3.6.24/epan/dissectors/packet-x509ce.c
===================================================================
--- wireshark-3.6.24.orig/epan/dissectors/packet-x509ce.c
+++ wireshark-3.6.24/epan/dissectors/packet-x509ce.c
@@ -319,6 +319,9 @@ static gint ett_x509ce_ScramblerCapabili
 /*--- Included file: packet-x509ce-fn.c ---*/
 #line 1 "./asn1/x509ce/packet-x509ce-fn.c"
 
+/* PolicyQualifierInfo/qualifier -> PolicyQualifierInfo/qualifier */
+static int dissect_x509ce_T_qualifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
 
 int
 dissect_x509ce_KeyIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
@@ -601,11 +604,13 @@ dissect_x509ce_T_policyQualifierId(gbool
 
 static int
 dissect_x509ce_T_qualifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 169 "./asn1/x509ce/x509ce.cnf"
+  // PolicyQualifierInfo/qualifier -> PolicyQualifierInfo/qualifier
+  increment_dissection_depth(actx->pinfo);
+  #line 169 "./asn1/x509ce/x509ce.cnf"
   offset=call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL);
 
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
Index: wireshark-3.6.24/epan/dissectors/packet-x509if.c
===================================================================
--- wireshark-3.6.24.orig/epan/dissectors/packet-x509if.c
+++ wireshark-3.6.24/epan/dissectors/packet-x509if.c
@@ -336,8 +336,44 @@ x509if_frame_end(void)
 /* AttributeCombination -> AttributeCombination */
 /*int dissect_x509if_AttributeCombination(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);*/
 
+/* Attribute/values/_item -> Attribute/values/_item */
+static int dissect_x509if_T_values_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
 
+/* Attribute/valuesWithContext/_item/value -> Attribute/valuesWithContext/_item/value */
+static int dissect_x509if_T_value(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
 
+/* Context/contextValues/_item -> Context/contextValues/_item */
+static int dissect_x509if_T_contextValues_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* AttributeValue -> AttributeValue */
+/*int dissect_x509if_AttributeValue(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);*/
+
+/* AttributeValueAssertion/assertion -> AttributeValueAssertion/assertion */
+static int dissect_x509if_T_assertion(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* ContextAssertion/contextValues/_item -> ContextAssertion/contextValues/_item */
+static int dissect_x509if_T_ca_contextValues_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* AttributeTypeAndDistinguishedValue/value -> AttributeTypeAndDistinguishedValue/value */
+static int dissect_x509if_T_atadv_value(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* AttributeTypeAndDistinguishedValue/valuesWithContext/_item/distingAttrValue -> AttributeTypeAndDistinguishedValue/valuesWithContext/_item/distingAttrValue */
+static int dissect_x509if_T_distingAttrValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* RequestAttribute/selectedValues/_item -> RequestAttribute/selectedValues/_item */
+static int dissect_x509if_T_ra_selectedValues_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* RequestAttribute/defaultValues/_item/values/_item -> RequestAttribute/defaultValues/_item/values/_item */
+static int dissect_x509if_T_ra_values_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* ContextProfile/contextValue/_item -> ContextProfile/contextValue/_item */
+static int dissect_x509if_T_contextValue_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* MatchingUse/restrictionValue -> MatchingUse/restrictionValue */
+static int dissect_x509if_T_restrictionValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* ResultAttribute/outputValues/selectedValues/_item -> ResultAttribute/outputValues/selectedValues/_item */
+static int dissect_x509if_T_selectedValues_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
 
 static int
 dissect_x509if_T_type(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
@@ -350,11 +386,13 @@ dissect_x509if_T_type(gboolean implicit_
 
 static int
 dissect_x509if_T_values_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // Attribute/values/_item -> Attribute/values/_item
+  increment_dissection_depth(actx->pinfo);
 #line 313 "./asn1/x509if/x509if.cnf"
   offset=call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL);
 
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -375,11 +413,13 @@ dissect_x509if_T_values(gboolean implici
 
 static int
 dissect_x509if_T_value(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // Attribute/valuesWithContext/_item/value -> Attribute/valuesWithContext/_item/value
+  increment_dissection_depth(actx->pinfo);
 #line 283 "./asn1/x509if/x509if.cnf"
   offset=call_ber_oid_callback("unknown", tvb, offset, actx->pinfo, tree, NULL);
 
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -396,11 +436,13 @@ dissect_x509if_T_contextType(gboolean im
 
 static int
 dissect_x509if_T_contextValues_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // Context/contextValues/_item -> Context/contextValues/_item
+  increment_dissection_depth(actx->pinfo);
 #line 295 "./asn1/x509if/x509if.cnf"
   offset=call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL);
 
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -518,11 +560,13 @@ dissect_x509if_AttributeType(gboolean im
 
 int
 dissect_x509if_AttributeValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // AttributeValue -> AttributeValue
+  increment_dissection_depth(actx->pinfo);
 #line 301 "./asn1/x509if/x509if.cnf"
   offset=call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL);
 
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -539,11 +583,13 @@ dissect_x509if_T_type_01(gboolean implic
 
 static int
 dissect_x509if_T_assertion(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // AttributeValueAssertion/assertion -> AttributeValueAssertion/assertion
+  increment_dissection_depth(actx->pinfo);
 #line 307 "./asn1/x509if/x509if.cnf"
   offset=call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL);
 
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -569,11 +615,13 @@ dissect_x509if_T_ca_contextType(gboolean
 
 static int
 dissect_x509if_T_ca_contextValues_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // ContextAssertion/contextValues/_item -> ContextAssertion/contextValues/_item
+  increment_dissection_depth(actx->pinfo);
 #line 184 "./asn1/x509if/x509if.cnf"
   offset=call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL);
 
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -708,6 +756,7 @@ dissect_x509if_AttributeTypeAssertion(gb
 
 static int
 dissect_x509if_T_type_02(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  increment_dissection_depth(actx->pinfo);
 #line 190 "./asn1/x509if/x509if.cnf"
   const char *fmt;
   const char *name;
@@ -745,6 +794,7 @@ dissect_x509if_T_type_02(gboolean implic
 
 
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -752,6 +802,8 @@ dissect_x509if_T_type_02(gboolean implic
 
 static int
 dissect_x509if_T_atadv_value(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // AttributeTypeAndDistinguishedValue/value -> AttributeTypeAndDistinguishedValue/value
+  increment_dissection_depth(actx->pinfo);
 #line 224 "./asn1/x509if/x509if.cnf"
   int old_offset = offset;
   tvbuff_t	*out_tvb;
@@ -800,7 +852,7 @@ dissect_x509if_T_atadv_value(gboolean im
   }
 
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -808,11 +860,13 @@ dissect_x509if_T_atadv_value(gboolean im
 
 static int
 dissect_x509if_T_distingAttrValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // AttributeTypeAndDistinguishedValue/valuesWithContext/_item/distingAttrValue -> AttributeTypeAndDistinguishedValue/valuesWithContext/_item/distingAttrValue
+  increment_dissection_depth(actx->pinfo);
 #line 328 "./asn1/x509if/x509if.cnf"
   offset=call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL);
 
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -1370,11 +1424,13 @@ dissect_x509if_T_attributeType(gboolean
 
 static int
 dissect_x509if_T_ra_selectedValues_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // RequestAttribute/selectedValues/_item -> RequestAttribute/selectedValues/_item
+  increment_dissection_depth(actx->pinfo);
 #line 274 "./asn1/x509if/x509if.cnf"
   offset=call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL);
 
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -1404,11 +1460,13 @@ dissect_x509if_T_entryType(gboolean impl
 
 static int
 dissect_x509if_T_ra_values_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // RequestAttribute/defaultValues/_item/values/_item -> RequestAttribute/defaultValues/_item/values/_item
+  increment_dissection_depth(actx->pinfo);
 #line 280 "./asn1/x509if/x509if.cnf"
   offset=call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL);
 
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -1466,11 +1524,13 @@ dissect_x509if_T_contextType_01(gboolean
 
 static int
 dissect_x509if_T_contextValue_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // ContextProfile/contextValue/_item -> ContextProfile/contextValue/_item
+  increment_dissection_depth(actx->pinfo);
 #line 319 "./asn1/x509if/x509if.cnf"
   offset=call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL);
 
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -1572,11 +1632,13 @@ dissect_x509if_T_restrictionType(gboolea
 
 static int
 dissect_x509if_T_restrictionValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // MatchingUse/restrictionValue -> MatchingUse/restrictionValue
+  increment_dissection_depth(actx->pinfo);
 #line 325 "./asn1/x509if/x509if.cnf"
   offset=call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL);
 
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -1698,11 +1760,13 @@ dissect_x509if_T_attributeType_01(gboole
 
 static int
 dissect_x509if_T_selectedValues_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // ResultAttribute/outputValues/selectedValues/_item -> ResultAttribute/outputValues/selectedValues/_item
+  increment_dissection_depth(actx->pinfo);
 #line 289 "./asn1/x509if/x509if.cnf"
   offset=call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL);
 
 
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
Index: wireshark-3.6.24/epan/dissectors/packet-xnap.c
===================================================================
--- wireshark-3.6.24.orig/epan/dissectors/packet-xnap.c
+++ wireshark-3.6.24/epan/dissectors/packet-xnap.c
@@ -2890,8 +2890,11 @@ dissect_xnap_TriggeringMessage(tvbuff_t
 
 static int
 dissect_xnap_ProtocolIE_Field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // ProtocolIE-Field/value -> ProtocolIE-Field/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolIEFieldValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -2938,8 +2941,11 @@ dissect_xnap_ProtocolIE_Single_Container
 
 static int
 dissect_xnap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolExtensionFieldExtensionValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -2977,8 +2983,11 @@ dissect_xnap_ProtocolExtensionContainer(
 
 static int
 dissect_xnap_PrivateIE_Field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // PrivateIE-Field/value -> PrivateIE-Field/value
+  increment_dissection_depth(actx->pinfo);
   offset = dissect_per_open_type(tvb, offset, actx, tree, hf_index, NULL);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -3948,11 +3957,29 @@ dissect_xnap_TAIforMDT_Item(tvbuff_t *tv
   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
                                    ett_xnap_TAIforMDT_Item, TAIforMDT_Item_sequence);
 
+  return offset;
+}
 
+/*--- Cyclic dependencies ---*/
 
+/* ProtocolIE-Field/value -> ProtocolIE-Field/value */
+static int dissect_xnap_ProtocolIE_Field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue */
+static int dissect_xnap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* PrivateIE-Field/value -> PrivateIE-Field/value */
+static int dissect_xnap_PrivateIE_Field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* InitiatingMessage/value -> InitiatingMessage/value */
+static int dissect_xnap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* SuccessfulOutcome/value -> SuccessfulOutcome/value */
+static int dissect_xnap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value */
+static int dissect_xnap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
 
-  return offset;
-}
 
 
 static const per_sequence_t TAIListforMDT_sequence_of[1] = {
@@ -18074,13 +18101,16 @@ dissect_xnap_AccessAndMobilityIndication
 
 static int
 dissect_xnap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
-#line 74 "./asn1/xnap/xnap.cnf"
+  // InitiatingMessage/value -> InitiatingMessage/value
+  increment_dissection_depth(actx->pinfo);
+  #line 74 "./asn1/xnap/xnap.cnf"
   struct xnap_private_data *xnap_data = xnap_get_private_data(actx->pinfo);
   xnap_data->message_type = INITIATING_MESSAGE;
 
 
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_InitiatingMessageValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -18104,6 +18134,8 @@ dissect_xnap_InitiatingMessage(tvbuff_t
 
 static int
 dissect_xnap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // SuccessfulOutcome/value -> SuccessfulOutcome/value
+  increment_dissection_depth(actx->pinfo);
 #line 79 "./asn1/xnap/xnap.cnf"
   struct xnap_private_data *xnap_data = xnap_get_private_data(actx->pinfo);
   xnap_data->message_type = SUCCESSFUL_OUTCOME;
@@ -18111,6 +18143,7 @@ dissect_xnap_SuccessfulOutcome_value(tvb
 
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_SuccessfulOutcomeValue);
 
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
@@ -18134,13 +18167,15 @@ dissect_xnap_SuccessfulOutcome(tvbuff_t
 
 static int
 dissect_xnap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+  // UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value
+  increment_dissection_depth(actx->pinfo);
 #line 84 "./asn1/xnap/xnap.cnf"
   struct xnap_private_data *xnap_data = xnap_get_private_data(actx->pinfo);
   xnap_data->message_type = UNSUCCESSFUL_OUTCOME;
 
 
   offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_UnsuccessfulOutcomeValue);
-
+  decrement_dissection_depth(actx->pinfo);
   return offset;
 }
 
Index: wireshark-3.6.24/tools/asn2wrs.py
===================================================================
--- wireshark-3.6.24.orig/tools/asn2wrs.py
+++ wireshark-3.6.24/tools/asn2wrs.py
@@ -546,14 +546,14 @@ def dependency_compute(items, dependency
     item_ord = []
     item_cyc = []
     x = {}  # already emitted
-    #print '# Dependency computation'
+    #print('# Dependency computation')
     for t in items:
         if map_fn(t) in x:
-            #print 'Continue: %s : %s' % (t, (map_fn(t))
+            #print('Continue: %s : %s' % (t, (map_fn(t))))
             continue
         stack = [t]
         stackx = {t : dependency.get(t, [])[:]}
-        #print 'Push: %s : %s' % (t, str(stackx[t]))
+        #print('Push: %s : %s' % (t, str(stackx[t])))
         while stack:
             if stackx[stack[-1]]:  # has dependencies
                 d = stackx[stack[-1]].pop(0)
@@ -565,18 +565,18 @@ def dependency_compute(items, dependency
                     c = [d] + c[0:c.index(d)+1]
                     c.reverse()
                     item_cyc.append(c)
-                    #print 'Cyclic: %s ' % (' -> '.join(c))
+                    #print('Cyclic: %s ' % (' -> '.join(c)))
                     continue
                 stack.append(d)
                 stackx[d] = dependency.get(d, [])[:]
-                #print 'Push: %s : %s' % (d, str(stackx[d]))
+                #print('Push: %s : %s' % (d, str(stackx[d])))
             else:
-                #print 'Pop: %s' % (stack[-1])
+                #print('Pop: %s' % (stack[-1]))
                 del stackx[stack[-1]]
                 e = map_fn(stack.pop())
                 if e in x:
                     continue
-                #print 'Add: %s' % (e)
+                #print('Add: %s' % (e))
                 item_ord.append(e)
                 x[e] = True
     return (item_ord, item_cyc)
@@ -4920,6 +4920,20 @@ class OpenType (Type):
         t = self.single_type()
         if t:
             ectx.eth_dep_add(ident, t)
+        else:
+            # It's an OpenType, which means a type field or a variable-type
+            # value [set] field, and we don't have a constraint that limits
+            # us to a single type. That means that this is "one whose set of
+            # values is the complete set of all possible values that can be
+            # specified using ASN.1." [Rec. ITU-T X.681 14.2] Also see X.680
+            # 3.8.57 NOTE 2.
+            #
+            # Determining all the possible types that could follow is likely
+            # impossible at this point and might be very hard even after
+            # everything is parsed. There *might* be cycles. In a conservative
+            # approach, just claim that the OpenType depends on itself, which
+            # will create a cyclical dependency for sure just in case.
+            ectx.eth_dep_add(ident, ident)
 
     def eth_tname(self):
         t = self.single_type()
