#include "omc_simulation_settings.h"
#include "TypesDump.h"
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT0,1,7) {&DAE_Dimension_DIM__UNKNOWN__desc,}};
#define _OMC_LIT0 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT0)
#define _OMC_LIT1_data "OpenModelica.Code.Expression"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT1,28,_OMC_LIT1_data);
#define _OMC_LIT1 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT1)
#define _OMC_LIT2_data "OpenModelica.Code.ExpressionOrModification"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT2,42,_OMC_LIT2_data);
#define _OMC_LIT2 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT2)
#define _OMC_LIT3_data "OpenModelica.Code.Modification"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT3,30,_OMC_LIT3_data);
#define _OMC_LIT3 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT3)
#define _OMC_LIT4_data "OpenModelica.Code.TypeName"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT4,26,_OMC_LIT4_data);
#define _OMC_LIT4 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT4)
#define _OMC_LIT5_data "OpenModelica.Code.VariableName"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT5,30,_OMC_LIT5_data);
#define _OMC_LIT5 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT5)
#define _OMC_LIT6_data "OpenModelica.Code.VariableNames"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT6,31,_OMC_LIT6_data);
#define _OMC_LIT6 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT6)
#define _OMC_LIT7_data "TypesDump.printCodeTypeStr failed"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT7,33,_OMC_LIT7_data);
#define _OMC_LIT7 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT7)
#define _OMC_LIT8_data ", "
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT8,2,_OMC_LIT8_data);
#define _OMC_LIT8 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT8)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT9,2,3) {&DAE_Type_T__INTEGER__desc,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT9 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT9)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT10,2,4) {&DAE_Type_T__REAL__desc,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT10 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT10)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT11,2,5) {&DAE_Type_T__STRING__desc,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT11 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT11)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT12,2,6) {&DAE_Type_T__BOOL__desc,MMC_REFSTRUCTLIT(mmc_nil)}};
#define _OMC_LIT12 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT12)
#define _OMC_LIT13_data "[DEFAULT VALUE]"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT13,15,_OMC_LIT13_data);
#define _OMC_LIT13 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT13)
#define _OMC_LIT14_data "[START VALUE]"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT14,13,_OMC_LIT14_data);
#define _OMC_LIT14 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT14)
#define _OMC_LIT15_data "[RECORD SUBMODS]"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT15,16,_OMC_LIT15_data);
#define _OMC_LIT15 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT15)
#define _OMC_LIT16_data "[DERIVED RECORD]"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT16,16,_OMC_LIT16_data);
#define _OMC_LIT16 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT16)
#define _OMC_LIT17_data ""
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT17,0,_OMC_LIT17_data);
#define _OMC_LIT17 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT17)
#define _OMC_LIT18_data "parglobal "
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT18,10,_OMC_LIT18_data);
#define _OMC_LIT18 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT18)
#define _OMC_LIT19_data "parlocal "
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT19,9,_OMC_LIT19_data);
#define _OMC_LIT19 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT19)
#define _OMC_LIT20_data "parameter "
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT20,10,_OMC_LIT20_data);
#define _OMC_LIT20 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT20)
#define _OMC_LIT21_data "constant "
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT21,9,_OMC_LIT21_data);
#define _OMC_LIT21 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT21)
#define _OMC_LIT22_data "Integer"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT22,7,_OMC_LIT22_data);
#define _OMC_LIT22 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT22)
#define _OMC_LIT23_data "Real"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT23,4,_OMC_LIT23_data);
#define _OMC_LIT23 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT23)
#define _OMC_LIT24_data "String"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT24,6,_OMC_LIT24_data);
#define _OMC_LIT24 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT24)
#define _OMC_LIT25_data "Boolean"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT25,7,_OMC_LIT25_data);
#define _OMC_LIT25 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT25)
#define _OMC_LIT26_data "Clock"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT26,5,_OMC_LIT26_data);
#define _OMC_LIT26 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT26)
#define _OMC_LIT27_data "."
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT27,1,_OMC_LIT27_data);
#define _OMC_LIT27 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT27)
#define _OMC_LIT28_data "["
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT28,1,_OMC_LIT28_data);
#define _OMC_LIT28 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT28)
#define _OMC_LIT29_data "]"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT29,1,_OMC_LIT29_data);
#define _OMC_LIT29 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT29)
#define _OMC_LIT30_data "Not nameable type or no type"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT30,28,_OMC_LIT30_data);
#define _OMC_LIT30 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT30)
#define _OMC_LIT31_data " "
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT31,1,_OMC_LIT31_data);
#define _OMC_LIT31 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT31)
#define _OMC_LIT32_data "UNBOUND"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT32,7,_OMC_LIT32_data);
#define _OMC_LIT32 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT32)
#define _OMC_LIT33_data "DAE.EQBOUND("
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT33,12,_OMC_LIT33_data);
#define _OMC_LIT33 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT33)
#define _OMC_LIT34_data ", NONE(), "
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT34,10,_OMC_LIT34_data);
#define _OMC_LIT34 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT34)
#define _OMC_LIT35_data ")"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT35,1,_OMC_LIT35_data);
#define _OMC_LIT35 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT35)
#define _OMC_LIT36_data ", SOME("
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT36,7,_OMC_LIT36_data);
#define _OMC_LIT36 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT36)
#define _OMC_LIT37_data "), "
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT37,3,_OMC_LIT37_data);
#define _OMC_LIT37 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT37)
#define _OMC_LIT38_data "DAE.VALBOUND("
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT38,13,_OMC_LIT38_data);
#define _OMC_LIT38 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT38)
#define _OMC_LIT39_data "TypesDump.printBindingStr failed."
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT39,33,_OMC_LIT39_data);
#define _OMC_LIT39 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT39)
#define _OMC_LIT40_data "/projects/OpenModelica-session2/OMCompiler/Compiler/FrontEnd/TypesDump.mo"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT40,73,_OMC_LIT40_data);
#define _OMC_LIT40 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT40)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT41_6,1.781983298e9);
#define _OMC_LIT41_6 MMC_REFREALLIT(_OMC_LIT_STRUCT41_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT41,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT40,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(787)),MMC_IMMEDIATE(MMC_TAGFIXNUM(9)),MMC_IMMEDIATE(MMC_TAGFIXNUM(787)),MMC_IMMEDIATE(MMC_TAGFIXNUM(77)),_OMC_LIT41_6}};
#define _OMC_LIT41 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT41)
#define _OMC_LIT42_data " := "
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT42,4,_OMC_LIT42_data);
#define _OMC_LIT42 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT42)
#define _OMC_LIT43_data "flow "
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT43,5,_OMC_LIT43_data);
#define _OMC_LIT43 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT43)
#define _OMC_LIT44_data "stream "
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT44,7,_OMC_LIT44_data);
#define _OMC_LIT44 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT44)
#define _OMC_LIT45_data "  "
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT45,2,_OMC_LIT45_data);
#define _OMC_LIT45 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT45)
#define _OMC_LIT46_data ";\n"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT46,2,_OMC_LIT46_data);
#define _OMC_LIT46 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT46)
#define _OMC_LIT47_data " = "
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT47,3,_OMC_LIT47_data);
#define _OMC_LIT47 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT47)
#define _OMC_LIT48_data " :: "
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT48,4,_OMC_LIT48_data);
#define _OMC_LIT48 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT48)
#define _OMC_LIT49_data " * "
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT49,3,_OMC_LIT49_data);
#define _OMC_LIT49 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT49)
#define _OMC_LIT50_data "/* expandable */ "
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT50,17,_OMC_LIT50_data);
#define _OMC_LIT50 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT50)
#define _OMC_LIT51_data "{"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT51,1,_OMC_LIT51_data);
#define _OMC_LIT51 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT51)
#define _OMC_LIT52_data "}"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT52,1,_OMC_LIT52_data);
#define _OMC_LIT52 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT52)
#define _OMC_LIT53_data " subtype of: "
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT53,13,_OMC_LIT53_data);
#define _OMC_LIT53 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT53)
#define _OMC_LIT54_data "("
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT54,1,_OMC_LIT54_data);
#define _OMC_LIT54 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT54)
#define _OMC_LIT55_data "Enumeration"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT55,11,_OMC_LIT55_data);
#define _OMC_LIT55 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT55)
#define _OMC_LIT56_data "composite("
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT56,10,_OMC_LIT56_data);
#define _OMC_LIT56 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT56)
#define _OMC_LIT57_data "}, derived from "
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT57,16,_OMC_LIT57_data);
#define _OMC_LIT57 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT57)
#define _OMC_LIT58_data "})"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT58,2,_OMC_LIT58_data);
#define _OMC_LIT58 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT58)
#define _OMC_LIT59_data "array("
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT59,6,_OMC_LIT59_data);
#define _OMC_LIT59 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT59)
#define _OMC_LIT60_data ")["
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT60,2,_OMC_LIT60_data);
#define _OMC_LIT60 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT60)
#define _OMC_LIT61_data "function("
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT61,9,_OMC_LIT61_data);
#define _OMC_LIT61 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT61)
#define _OMC_LIT62_data ") => "
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT62,5,_OMC_LIT62_data);
#define _OMC_LIT62 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT62)
#define _OMC_LIT63_data "list<"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT63,5,_OMC_LIT63_data);
#define _OMC_LIT63 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT63)
#define _OMC_LIT64_data ">"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT64,1,_OMC_LIT64_data);
#define _OMC_LIT64 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT64)
#define _OMC_LIT65_data "Option<"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT65,7,_OMC_LIT65_data);
#define _OMC_LIT65 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT65)
#define _OMC_LIT66_data "array<"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT66,6,_OMC_LIT66_data);
#define _OMC_LIT66 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT66)
#define _OMC_LIT67_data "boxed<"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT67,6,_OMC_LIT67_data);
#define _OMC_LIT67 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT67)
#define _OMC_LIT68_data "polymorphic<"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT68,12,_OMC_LIT68_data);
#define _OMC_LIT68 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT68)
#define _OMC_LIT69_data "T_UNKNOWN"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT69,9,_OMC_LIT69_data);
#define _OMC_LIT69 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT69)
#define _OMC_LIT70_data "ANYTYPE()"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT70,9,_OMC_LIT70_data);
#define _OMC_LIT70 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT70)
#define _OMC_LIT71_data "ANYTYPE("
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT71,8,_OMC_LIT71_data);
#define _OMC_LIT71 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT71)
#define _OMC_LIT72_data "()"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT72,2,_OMC_LIT72_data);
#define _OMC_LIT72 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT72)
#define _OMC_LIT73_data "METATYPE("
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT73,9,_OMC_LIT73_data);
#define _OMC_LIT73 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT73)
#define _OMC_LIT74_data "#"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT74,1,_OMC_LIT74_data);
#define _OMC_LIT74 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT74)
#define _OMC_LIT75_data "$Code(Expression)"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT75,17,_OMC_LIT75_data);
#define _OMC_LIT75 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT75)
#define _OMC_LIT76_data "$Code(ExpressionOrModification)"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT76,31,_OMC_LIT76_data);
#define _OMC_LIT76 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT76)
#define _OMC_LIT77_data "$Code(TypeName)"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT77,15,_OMC_LIT77_data);
#define _OMC_LIT77 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT77)
#define _OMC_LIT78_data "$Code(VariableName)"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT78,19,_OMC_LIT78_data);
#define _OMC_LIT78 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT78)
#define _OMC_LIT79_data "$Code(VariableName[:])"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT79,22,_OMC_LIT79_data);
#define _OMC_LIT79 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT79)
#define _OMC_LIT80_data "TypesDump.printTypeStr failed"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT80,29,_OMC_LIT80_data);
#define _OMC_LIT80 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT80)
#define _OMC_LIT81_data "C_CONST"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT81,7,_OMC_LIT81_data);
#define _OMC_LIT81 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT81)
#define _OMC_LIT82_data "C_PARAM"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT82,7,_OMC_LIT82_data);
#define _OMC_LIT82 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT82)
#define _OMC_LIT83_data "C_VAR"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT83,5,_OMC_LIT83_data);
#define _OMC_LIT83 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT83)
#define _OMC_LIT84_data "TypesDump.printConstStr failed."
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT84,31,_OMC_LIT84_data);
#define _OMC_LIT84 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT84)
static const MMC_DEFREALLIT(_OMC_LIT_STRUCT85_6,1.781983298e9);
#define _OMC_LIT85_6 MMC_REFREALLIT(_OMC_LIT_STRUCT85_6)
static const MMC_DEFSTRUCTLIT(_OMC_LIT_STRUCT85,8,3) {&SourceInfo_SOURCEINFO__desc,_OMC_LIT40,MMC_IMMEDIATE(MMC_TAGFIXNUM(0 /* false */)),MMC_IMMEDIATE(MMC_TAGFIXNUM(349)),MMC_IMMEDIATE(MMC_TAGFIXNUM(7)),MMC_IMMEDIATE(MMC_TAGFIXNUM(349)),MMC_IMMEDIATE(MMC_TAGFIXNUM(75)),_OMC_LIT85_6}};
#define _OMC_LIT85 MMC_REFSTRUCTLIT(_OMC_LIT_STRUCT85)
#define _OMC_LIT86_data "constant"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT86,8,_OMC_LIT86_data);
#define _OMC_LIT86 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT86)
#define _OMC_LIT87_data "parameter"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT87,9,_OMC_LIT87_data);
#define _OMC_LIT87 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT87)
#define _OMC_LIT88_data "continuous"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT88,10,_OMC_LIT88_data);
#define _OMC_LIT88 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT88)
#define _OMC_LIT89_data "unknown"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT89,7,_OMC_LIT89_data);
#define _OMC_LIT89 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT89)
#define _OMC_LIT90_data "Integer("
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT90,8,_OMC_LIT90_data);
#define _OMC_LIT90 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT90)
#define _OMC_LIT91_data "Real("
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT91,5,_OMC_LIT91_data);
#define _OMC_LIT91 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT91)
#define _OMC_LIT92_data "String("
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT92,7,_OMC_LIT92_data);
#define _OMC_LIT92 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT92)
#define _OMC_LIT93_data "Boolean("
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT93,8,_OMC_LIT93_data);
#define _OMC_LIT93 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT93)
#define _OMC_LIT94_data " /*"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT94,3,_OMC_LIT94_data);
#define _OMC_LIT94 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT94)
#define _OMC_LIT95_data "*/ ("
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT95,4,_OMC_LIT95_data);
#define _OMC_LIT95 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT95)
#define _OMC_LIT96_data "enumeration"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT96,11,_OMC_LIT96_data);
#define _OMC_LIT96 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT96)
#define _OMC_LIT97_data "record "
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT97,7,_OMC_LIT97_data);
#define _OMC_LIT97 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT97)
#define _OMC_LIT98_data "\n"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT98,1,_OMC_LIT98_data);
#define _OMC_LIT98 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT98)
#define _OMC_LIT99_data "end "
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT99,4,_OMC_LIT99_data);
#define _OMC_LIT99 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT99)
#define _OMC_LIT100_data ";"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT100,1,_OMC_LIT100_data);
#define _OMC_LIT100 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT100)
#define _OMC_LIT101_data "expandable "
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT101,11,_OMC_LIT101_data);
#define _OMC_LIT101 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT101)
#define _OMC_LIT102_data "connector "
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT102,10,_OMC_LIT102_data);
#define _OMC_LIT102 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT102)
#define _OMC_LIT103_data " bc:"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT103,4,_OMC_LIT103_data);
#define _OMC_LIT103 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT103)
#define _OMC_LIT104_data "<function>("
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT104,11,_OMC_LIT104_data);
#define _OMC_LIT104 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT104)
#define _OMC_LIT105_data "tuple<"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT105,6,_OMC_LIT105_data);
#define _OMC_LIT105 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT105)
#define _OMC_LIT106_data "<"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT106,1,_OMC_LIT106_data);
#define _OMC_LIT106 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT106)
#define _OMC_LIT107_data ","
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT107,1,_OMC_LIT107_data);
#define _OMC_LIT107 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT107)
#define _OMC_LIT108_data "Option<Any>"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT108,11,_OMC_LIT108_data);
#define _OMC_LIT108 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT108)
#define _OMC_LIT109_data "#NORETCALL#"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT109,11,_OMC_LIT109_data);
#define _OMC_LIT109 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT109)
#define _OMC_LIT110_data "#T_UNKNOWN#"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT110,11,_OMC_LIT110_data);
#define _OMC_LIT110 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT110)
#define _OMC_LIT111_data "#ANYTYPE#"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT111,9,_OMC_LIT111_data);
#define _OMC_LIT111 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT111)
#define _OMC_LIT112_data "#FUNCTION_REFERENCE_VAR#"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT112,24,_OMC_LIT112_data);
#define _OMC_LIT112 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT112)
#define _OMC_LIT113_data "#FUNCTION_REFERENCE_FUNC#"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT113,25,_OMC_LIT113_data);
#define _OMC_LIT113 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT113)
#define _OMC_LIT114_data "Internal error TypesDump.unparseType: not implemented yet\n"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT114,58,_OMC_LIT114_data);
#define _OMC_LIT114 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT114)
#define _OMC_LIT115_data "NONE()"
static const MMC_DEFSTRINGLIT(_OMC_LIT_STRUCT115,6,_OMC_LIT115_data);
#define _OMC_LIT115 MMC_REFSTRINGLIT(_OMC_LIT_STRUCT115)
#include "util/modelica.h"

#include "TypesDump_includes.h"


/* default, do not make protected functions static */
#if !defined(PROTECTED_FUNCTION_STATIC)
#define PROTECTED_FUNCTION_STATIC
#endif
PROTECTED_FUNCTION_STATIC modelica_string omc_TypesDump_unparseParam(threadData_t *threadData, modelica_metatype _inFuncArg);
static const MMC_DEFSTRUCTLIT(boxvar_lit_TypesDump_unparseParam,2,0) {(void*) boxptr_TypesDump_unparseParam,0}};
#define boxvar_TypesDump_unparseParam MMC_REFSTRUCTLIT(boxvar_lit_TypesDump_unparseParam)

DLLDirection
modelica_metatype omc_TypesDump_getDimensions(threadData_t *threadData, modelica_metatype _inType)
{
  modelica_metatype _outDimensions = NULL;
  modelica_metatype tmpMeta1;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _outDimensions has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _inType;
    {
      int tmp4;
      {
        switch (MMC_SWITCH_CAST(valueConstructor(tmp4_1))) {
        case 9: {
          
          /* Pattern matching succeeded */
          tmpMeta1 = listAppend((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inType), 3))), omc_TypesDump_getDimensions(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inType), 2)))));
          goto tmp3_done;
        }
        case 25: {
          modelica_metatype tmpMeta5;
          
          /* Pattern matching succeeded */
          tmpMeta5 = mmc_mk_cons(_OMC_LIT0, omc_TypesDump_getDimensions(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inType), 2)))));
          tmpMeta1 = tmpMeta5;
          goto tmp3_done;
        }
        case 13: {
          
          /* Pattern matching succeeded */
          /* Tail recursive call */
          _inType = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inType), 4)));
          goto _tailrecursive;
          /* TODO: Make sure any eventual dead code below is never generated */
          goto tmp3_done;
        }
        case 28: {
          
          /* Pattern matching succeeded */
          /* Tail recursive call */
          _inType = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inType), 2)));
          goto _tailrecursive;
          /* TODO: Make sure any eventual dead code below is never generated */
          goto tmp3_done;
        }
        default:
        tmp3_default: OMC_LABEL_UNUSED; {
          modelica_metatype tmpMeta6;
          
          /* Pattern matching succeeded */
          tmpMeta6 = MMC_REFSTRUCTLIT(mmc_nil);
          tmpMeta1 = tmpMeta6;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _outDimensions = tmpMeta1;
  _return: OMC_LABEL_UNUSED
  return _outDimensions;
}

DLLDirection
modelica_string omc_TypesDump_printCodeTypeStr(threadData_t *threadData, modelica_metatype _ct)
{
  modelica_string _str = NULL;
  modelica_string tmp1 = 0;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _str has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _ct;
    {
      int tmp4;
      {
        switch (MMC_SWITCH_CAST(valueConstructor(tmp4_1))) {
        case 3: {
          
          /* Pattern matching succeeded */
          tmp1 = _OMC_LIT1;
          goto tmp3_done;
        }
        case 4: {
          
          /* Pattern matching succeeded */
          tmp1 = _OMC_LIT2;
          goto tmp3_done;
        }
        case 5: {
          
          /* Pattern matching succeeded */
          tmp1 = _OMC_LIT3;
          goto tmp3_done;
        }
        case 6: {
          
          /* Pattern matching succeeded */
          tmp1 = _OMC_LIT4;
          goto tmp3_done;
        }
        case 7: {
          
          /* Pattern matching succeeded */
          tmp1 = _OMC_LIT5;
          goto tmp3_done;
        }
        case 8: {
          
          /* Pattern matching succeeded */
          tmp1 = _OMC_LIT6;
          goto tmp3_done;
        }
        default:
        tmp3_default: OMC_LABEL_UNUSED; {
          
          /* Pattern matching succeeded */
          tmp1 = _OMC_LIT7;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _str = tmp1;
  _return: OMC_LABEL_UNUSED
  return _str;
}

DLLDirection
modelica_string omc_TypesDump_printDimensionsStr(threadData_t *threadData, modelica_metatype _dims)
{
  modelica_string _res = NULL;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _res has no default value.
  _res = stringDelimitList(omc_List_map(threadData, _dims, boxvar_ExpressionBasics_dimensionString), _OMC_LIT8);
  _return: OMC_LABEL_UNUSED
  return _res;
}

DLLDirection
modelica_metatype omc_TypesDump_stripTypeVars(threadData_t *threadData, modelica_metatype _inType, modelica_metatype *out_outVars)
{
  modelica_metatype _outType = NULL;
  modelica_metatype _outVars = NULL;
  modelica_metatype tmpMeta[2] __attribute__((unused)) = {0};
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _outType has no default value.
  // _outVars has no default value.
  
  
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _inType;
    {
      modelica_metatype _vars = NULL;
      modelica_metatype _sub_vars = NULL;
      modelica_metatype _ty = NULL;
      modelica_metatype _dims = NULL;
      modelica_metatype _state = NULL;
      modelica_metatype _ec = NULL;
      modelica_metatype _tys = NULL;
      int tmp4;
      // _vars has no default value.
      // _sub_vars has no default value.
      // _ty has no default value.
      // _dims has no default value.
      // _state has no default value.
      // _ec has no default value.
      // _tys has no default value.
      {
        switch (MMC_SWITCH_CAST(valueConstructor(tmp4_1))) {
        case 3: {
          modelica_metatype tmpMeta5;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,0,1) == 0) goto tmp3_end;
          tmpMeta5 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          _vars = tmpMeta5;
          /* Pattern matching succeeded */
          tmpMeta[0+0] = _OMC_LIT9;
          tmpMeta[0+1] = _vars;
          goto tmp3_done;
        }
        case 4: {
          modelica_metatype tmpMeta6;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,1,1) == 0) goto tmp3_end;
          tmpMeta6 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          _vars = tmpMeta6;
          /* Pattern matching succeeded */
          tmpMeta[0+0] = _OMC_LIT10;
          tmpMeta[0+1] = _vars;
          goto tmp3_done;
        }
        case 5: {
          modelica_metatype tmpMeta7;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,2,1) == 0) goto tmp3_end;
          tmpMeta7 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          _vars = tmpMeta7;
          /* Pattern matching succeeded */
          tmpMeta[0+0] = _OMC_LIT11;
          tmpMeta[0+1] = _vars;
          goto tmp3_done;
        }
        case 6: {
          modelica_metatype tmpMeta8;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,3,1) == 0) goto tmp3_end;
          tmpMeta8 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          _vars = tmpMeta8;
          /* Pattern matching succeeded */
          tmpMeta[0+0] = _OMC_LIT12;
          tmpMeta[0+1] = _vars;
          goto tmp3_done;
        }
        case 17: {
          modelica_metatype tmpMeta9;
          modelica_metatype tmpMeta10;
          modelica_metatype tmpMeta11;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,14,2) == 0) goto tmp3_end;
          tmpMeta9 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          
          _tys = tmpMeta9;
          /* Pattern matching succeeded */
          tmpMeta10 = mmc_mk_box3(17, &DAE_Type_T__TUPLE__desc, _tys, mmc_mk_none());
          tmpMeta11 = MMC_REFSTRUCTLIT(mmc_nil);
          tmpMeta[0+0] = tmpMeta10;
          tmpMeta[0+1] = tmpMeta11;
          goto tmp3_done;
        }
        case 9: {
          modelica_metatype tmpMeta12;
          modelica_metatype tmpMeta13;
          modelica_metatype tmpMeta14;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,6,2) == 0) goto tmp3_end;
          tmpMeta12 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          tmpMeta13 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 3));
          _ty = tmpMeta12;
          _dims = tmpMeta13;
          /* Pattern matching succeeded */
          _ty = omc_TypesDump_stripTypeVars(threadData, _ty ,&_vars);
          tmpMeta14 = mmc_mk_box3(9, &DAE_Type_T__ARRAY__desc, _ty, _dims);
          tmpMeta[0+0] = tmpMeta14;
          tmpMeta[0+1] = _vars;
          goto tmp3_done;
        }
        case 13: {
          modelica_metatype tmpMeta15;
          modelica_metatype tmpMeta16;
          modelica_metatype tmpMeta17;
          modelica_metatype tmpMeta18;
          modelica_metatype tmpMeta19;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,10,4) == 0) goto tmp3_end;
          tmpMeta15 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          tmpMeta16 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 3));
          tmpMeta17 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 4));
          tmpMeta18 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 5));
          _state = tmpMeta15;
          _sub_vars = tmpMeta16;
          _ty = tmpMeta17;
          _ec = tmpMeta18;
          /* Pattern matching succeeded */
          _ty = omc_TypesDump_stripTypeVars(threadData, _ty ,&_vars);
          tmpMeta19 = mmc_mk_box5(13, &DAE_Type_T__SUBTYPE__BASIC__desc, _state, _sub_vars, _ty, _ec);
          tmpMeta[0+0] = tmpMeta19;
          tmpMeta[0+1] = _vars;
          goto tmp3_done;
        }
        default:
        tmp3_default: OMC_LABEL_UNUSED; {
          modelica_metatype tmpMeta20;
          
          /* Pattern matching succeeded */
          tmpMeta20 = MMC_REFSTRUCTLIT(mmc_nil);
          tmpMeta[0+0] = _inType;
          tmpMeta[0+1] = tmpMeta20;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _outType = tmpMeta[0+0];
  _outVars = tmpMeta[0+1];
  _return: OMC_LABEL_UNUSED
  if (out_outVars) { *out_outVars = _outVars; }
  return _outType;
}

DLLDirection
modelica_string omc_TypesDump_getVarName(threadData_t *threadData, modelica_metatype _v)
{
  modelica_string _name = NULL;
  modelica_string tmp1 = 0;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _name has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _v;
    {
      volatile mmc_switch_type tmp4;
      int tmp5;
      tmp4 = 0;
      for (; tmp4 < 1; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          tmpMeta6 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          
          _name = tmpMeta6;
          /* Pattern matching succeeded */
          tmp1 = _name;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _name = tmp1;
  _return: OMC_LABEL_UNUSED
  return _name;
}

DLLDirection
modelica_metatype omc_TypesDump_flattenArrayType(threadData_t *threadData, modelica_metatype _inType, modelica_metatype *out_outDimensions)
{
  modelica_metatype _outType = NULL;
  modelica_metatype _outDimensions = NULL;
  modelica_metatype tmpMeta[2] __attribute__((unused)) = {0};
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _outType has no default value.
  // _outDimensions has no default value.
  
  
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _inType;
    {
      modelica_metatype _ty = NULL;
      modelica_metatype _dims = NULL;
      volatile mmc_switch_type tmp4;
      int tmp5;
      // _ty has no default value.
      // _dims has no default value.
      tmp4 = 0;
      for (; tmp4 < 4; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,6,2) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          _ty = omc_TypesDump_flattenArrayType(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inType), 2))) ,&_dims);

          _dims = listAppend((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inType), 3))), _dims);
          tmpMeta[0+0] = _ty;
          tmpMeta[0+1] = _dims;
          goto tmp3_done;
        }
        case 1: {
          modelica_metatype tmpMeta6;
          modelica_metatype tmpMeta7;
          modelica_metatype tmpMeta8;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,10,4) == 0) goto tmp3_end;
          tmpMeta6 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 5));
          if (optionNone(tmpMeta6)) goto tmp3_end;
          tmpMeta7 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta6), 1));
          /* Pattern matching succeeded */
          tmpMeta8 = MMC_REFSTRUCTLIT(mmc_nil);
          tmpMeta[0+0] = _inType;
          tmpMeta[0+1] = tmpMeta8;
          goto tmp3_done;
        }
        case 2: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,10,4) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          /* Tail recursive call */
          _inType = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inType), 4)));
          goto _tailrecursive;
          /* TODO: Make sure any eventual dead code below is never generated */
          goto tmp3_done;
        }
        case 3: {
          modelica_metatype tmpMeta9;
          
          /* Pattern matching succeeded */
          tmpMeta9 = MMC_REFSTRUCTLIT(mmc_nil);
          tmpMeta[0+0] = _inType;
          tmpMeta[0+1] = tmpMeta9;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _outType = tmpMeta[0+0];
  _outDimensions = tmpMeta[0+1];
  _return: OMC_LABEL_UNUSED
  if (out_outDimensions) { *out_outDimensions = _outDimensions; }
  return _outType;
}

DLLDirection
modelica_string omc_TypesDump_printBindingSourceStr(threadData_t *threadData, modelica_metatype _bindingSource)
{
  modelica_string _str = NULL;
  modelica_string tmp1 = 0;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _str has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _bindingSource;
    {
      int tmp4;
      {
        switch (MMC_SWITCH_CAST(valueConstructor(tmp4_1))) {
        case 3: {
          
          /* Pattern matching succeeded */
          tmp1 = _OMC_LIT13;
          goto tmp3_done;
        }
        case 4: {
          
          /* Pattern matching succeeded */
          tmp1 = _OMC_LIT14;
          goto tmp3_done;
        }
        case 5: {
          
          /* Pattern matching succeeded */
          tmp1 = _OMC_LIT15;
          goto tmp3_done;
        }
        case 6: {
          
          /* Pattern matching succeeded */
          tmp1 = _OMC_LIT16;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _str = tmp1;
  _return: OMC_LABEL_UNUSED
  return _str;
}

DLLDirection
modelica_string omc_TypesDump_dumpVarParallelismStr(threadData_t *threadData, modelica_metatype _inVarParallelism)
{
  modelica_string _outString = NULL;
  modelica_string tmp1 = 0;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _outString has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _inVarParallelism;
    {
      int tmp4;
      {
        switch (MMC_SWITCH_CAST(valueConstructor(tmp4_1))) {
        case 5: {
          
          /* Pattern matching succeeded */
          tmp1 = _OMC_LIT17;
          goto tmp3_done;
        }
        case 3: {
          
          /* Pattern matching succeeded */
          tmp1 = _OMC_LIT18;
          goto tmp3_done;
        }
        case 4: {
          
          /* Pattern matching succeeded */
          tmp1 = _OMC_LIT19;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _outString = tmp1;
  _return: OMC_LABEL_UNUSED
  return _outString;
}

DLLDirection
modelica_string omc_TypesDump_constStrFriendly(threadData_t *threadData, modelica_metatype _const)
{
  modelica_string _str = NULL;
  modelica_string tmp1 = 0;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _str has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _const;
    {
      int tmp4;
      {
        switch (MMC_SWITCH_CAST(valueConstructor(tmp4_1))) {
        case 5: {
          
          /* Pattern matching succeeded */
          tmp1 = _OMC_LIT17;
          goto tmp3_done;
        }
        case 4: {
          
          /* Pattern matching succeeded */
          tmp1 = _OMC_LIT20;
          goto tmp3_done;
        }
        case 3: {
          
          /* Pattern matching succeeded */
          tmp1 = _OMC_LIT21;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _str = tmp1;
  _return: OMC_LABEL_UNUSED
  return _str;
}

DLLDirection
modelica_string omc_TypesDump_getTypeName(threadData_t *threadData, modelica_metatype _inType)
{
  modelica_string _outString = NULL;
  modelica_string tmp1 = 0;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _outString has no default value.
  { /* matchcontinue expression */
    volatile modelica_metatype tmp4_1;
    tmp4_1 = _inType;
    {
      modelica_string _dimstr = NULL;
      modelica_string _tystr = NULL;
      modelica_metatype _st = NULL;
      modelica_metatype _ty = NULL;
      modelica_metatype _arrayty = NULL;
      modelica_metatype _dims = NULL;
      volatile mmc_switch_type tmp4;
      int tmp5;
      // _dimstr has no default value.
      // _tystr has no default value.
      // _st has no default value.
      // _ty has no default value.
      // _arrayty has no default value.
      // _dims has no default value.
      tmp4 = 0;
      MMC_TRY_INTERNAL(mmc_jumper)
      tmp3_top:
      threadData->mmc_jumper = &new_mmc_jumper;
      for (; tmp4 < 10; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,0,1) == 0) goto tmp3_end;
          
          tmp4 += 8; /* Pattern matching succeeded; we may skip some cases if we fail */
          tmp1 = _OMC_LIT22;
          goto tmp3_done;
        }
        case 1: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,1,1) == 0) goto tmp3_end;
          
          tmp4 += 7; /* Pattern matching succeeded; we may skip some cases if we fail */
          tmp1 = _OMC_LIT23;
          goto tmp3_done;
        }
        case 2: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,2,1) == 0) goto tmp3_end;
          
          tmp4 += 6; /* Pattern matching succeeded; we may skip some cases if we fail */
          tmp1 = _OMC_LIT24;
          goto tmp3_done;
        }
        case 3: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,3,1) == 0) goto tmp3_end;
          
          tmp4 += 5; /* Pattern matching succeeded; we may skip some cases if we fail */
          tmp1 = _OMC_LIT25;
          goto tmp3_done;
        }
        case 4: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,4,1) == 0) goto tmp3_end;
          
          tmp4 += 4; /* Pattern matching succeeded; we may skip some cases if we fail */
          tmp1 = _OMC_LIT26;
          goto tmp3_done;
        }
        case 5: {
          modelica_metatype tmpMeta6;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,9,4) == 0) goto tmp3_end;
          tmpMeta6 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          
          _st = tmpMeta6;
          tmp4 += 3; /* Pattern matching succeeded; we may skip some cases if we fail */
          tmp1 = omc_AbsynUtil_pathString(threadData, omc_ClassInfUtil_getStateName(threadData, _st), _OMC_LIT27, 1 /* true */, 0 /* false */);
          goto tmp3_done;
        }
        case 6: {
          modelica_metatype tmpMeta7;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,10,4) == 0) goto tmp3_end;
          tmpMeta7 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          
          _st = tmpMeta7;
          tmp4 += 2; /* Pattern matching succeeded; we may skip some cases if we fail */
          tmp1 = omc_AbsynUtil_pathString(threadData, omc_ClassInfUtil_getStateName(threadData, _st), _OMC_LIT27, 1 /* true */, 0 /* false */);
          goto tmp3_done;
        }
        case 7: {
          modelica_metatype tmpMeta8;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,6,2) == 0) goto tmp3_end;
          
          _arrayty = tmp4_1;
          tmp4 += 1; /* Pattern matching succeeded; we may skip some cases if we fail */
          _ty = omc_TypesDump_flattenArrayType(threadData, _arrayty ,&_dims);

          _dimstr = omc_ExpressionBasics_dimensionsString(threadData, _dims);

          _tystr = omc_TypesDump_getTypeName(threadData, _ty);
          tmpMeta8 = mmc_mk_cons(_tystr, mmc_mk_cons(_OMC_LIT28, mmc_mk_cons(_dimstr, mmc_mk_cons(_OMC_LIT29, MMC_REFSTRUCTLIT(mmc_nil)))));
          tmp1 = stringAppendList(tmpMeta8);
          goto tmp3_done;
        }
        case 8: {
          modelica_metatype tmpMeta9;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,17,1) == 0) goto tmp3_end;
          tmpMeta9 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          _ty = tmpMeta9;
          /* Pattern matching succeeded */
          tmp1 = omc_TypesDump_getTypeName(threadData, _ty);
          goto tmp3_done;
        }
        case 9: {
          
          /* Pattern matching succeeded */
          tmp1 = _OMC_LIT30;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      tmp3_done:
      (void)tmp4;
      MMC_RESTORE_INTERNAL(mmc_jumper);
      goto tmp3_done2;
      goto_2:;
      MMC_CATCH_INTERNAL(mmc_jumper);
      if (++tmp4 < 10) {
        goto tmp3_top;
      }
      MMC_THROW_INTERNAL();
      tmp3_done2:;
    }
  }
  _outString = tmp1;
  _return: OMC_LABEL_UNUSED
  return _outString;
}

DLLDirection
modelica_string omc_TypesDump_printFargStr(threadData_t *threadData, modelica_metatype _inFuncArg)
{
  modelica_string _outString = NULL;
  modelica_string tmp1 = 0;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _outString has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _inFuncArg;
    {
      modelica_string _s = NULL;
      modelica_string _n = NULL;
      modelica_string _cs = NULL;
      modelica_metatype _ty = NULL;
      modelica_metatype _c = NULL;
      volatile mmc_switch_type tmp4;
      int tmp5;
      // _s has no default value.
      // _n has no default value.
      // _cs has no default value.
      // _ty has no default value.
      // _c has no default value.
      tmp4 = 0;
      for (; tmp4 < 1; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          modelica_metatype tmpMeta7;
          modelica_metatype tmpMeta8;
          modelica_metatype tmpMeta9;
          tmpMeta6 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          tmpMeta7 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 3));
          tmpMeta8 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 4));
          
          _n = tmpMeta6;
          _ty = tmpMeta7;
          _c = tmpMeta8;
          /* Pattern matching succeeded */
          _s = omc_TypesDump_unparseType(threadData, _ty);

          _cs = omc_TypesDump_constStrFriendly(threadData, _c);
          tmpMeta9 = mmc_mk_cons(_cs, mmc_mk_cons(_s, mmc_mk_cons(_OMC_LIT31, mmc_mk_cons(_n, MMC_REFSTRUCTLIT(mmc_nil)))));
          tmp1 = stringAppendList(tmpMeta9);
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _outString = tmp1;
  _return: OMC_LABEL_UNUSED
  return _outString;
}

DLLDirection
void omc_TypesDump_printFarg(threadData_t *threadData, modelica_metatype _inFuncArg)
{
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  { /* match expression */
    modelica_metatype tmp3_1;
    tmp3_1 = _inFuncArg;
    {
      modelica_string _n = NULL;
      modelica_metatype _ty = NULL;
      volatile mmc_switch_type tmp3;
      int tmp4;
      // _n has no default value.
      // _ty has no default value.
      tmp3 = 0;
      for (; tmp3 < 1; tmp3++) {
        switch (MMC_SWITCH_CAST(tmp3)) {
        case 0: {
          modelica_metatype tmpMeta5;
          modelica_metatype tmpMeta6;
          tmpMeta5 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_1), 2));
          tmpMeta6 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp3_1), 3));
          
          _n = tmpMeta5;
          _ty = tmpMeta6;
          /* Pattern matching succeeded */
          omc_Print_printErrorBuf(threadData, omc_TypesDump_printTypeStr(threadData, _ty));

          omc_Print_printErrorBuf(threadData, _OMC_LIT31);

          omc_Print_printErrorBuf(threadData, _n);
          goto tmp2_done;
        }
        }
        goto tmp2_end;
        tmp2_end: ;
      }
      goto goto_1;
      goto_1:;
      MMC_THROW_INTERNAL();
      goto tmp2_done;
      tmp2_done:;
    }
  }
  ;
  _return: OMC_LABEL_UNUSED
  return;
}

DLLDirection
modelica_string omc_TypesDump_printBindingStr(threadData_t *threadData, modelica_metatype _inBinding)
{
  modelica_string _outString = NULL;
  modelica_string tmp1 = 0;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _outString has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _inBinding;
    {
      modelica_string _str = NULL;
      modelica_string _str2 = NULL;
      modelica_string _v_str = NULL;
      modelica_string _s = NULL;
      modelica_string _str3 = NULL;
      modelica_metatype _v = NULL;
      volatile mmc_switch_type tmp4;
      int tmp5;
      // _str has no default value.
      // _str2 has no default value.
      // _v_str has no default value.
      // _s has no default value.
      // _str3 has no default value.
      // _v has no default value.
      tmp4 = 0;
      for (; tmp4 < 5; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,0,0) == 0) goto tmp3_end;
          /* Pattern matching succeeded */
          tmp1 = _OMC_LIT32;
          goto tmp3_done;
        }
        case 1: {
          modelica_metatype tmpMeta6;
          modelica_metatype tmpMeta7;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,1,4) == 0) goto tmp3_end;
          tmpMeta6 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 3));
          if (!optionNone(tmpMeta6)) goto tmp3_end;
          
          /* Pattern matching succeeded */
          _str = omc_ExpressionBasics_printExpStr(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inBinding), 2))));

          _str2 = omc_TypesDump_printConstStr(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inBinding), 4))));

          _str3 = omc_TypesDump_printBindingSourceStr(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inBinding), 5))));
          tmpMeta7 = mmc_mk_cons(_OMC_LIT33, mmc_mk_cons(_str, mmc_mk_cons(_OMC_LIT34, mmc_mk_cons(_str2, mmc_mk_cons(_OMC_LIT8, mmc_mk_cons(_str3, mmc_mk_cons(_OMC_LIT35, MMC_REFSTRUCTLIT(mmc_nil))))))));
          tmp1 = stringAppendList(tmpMeta7);
          goto tmp3_done;
        }
        case 2: {
          modelica_metatype tmpMeta8;
          modelica_metatype tmpMeta9;
          modelica_metatype tmpMeta10;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,1,4) == 0) goto tmp3_end;
          tmpMeta8 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 3));
          if (optionNone(tmpMeta8)) goto tmp3_end;
          tmpMeta9 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta8), 1));
          
          _v = tmpMeta9;
          /* Pattern matching succeeded */
          _str = omc_ExpressionBasics_printExpStr(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inBinding), 2))));

          _str2 = omc_TypesDump_printConstStr(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inBinding), 4))));

          _v_str = omc_ValuesDump_valString(threadData, _v);

          _str3 = omc_TypesDump_printBindingSourceStr(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inBinding), 5))));
          tmpMeta10 = mmc_mk_cons(_OMC_LIT33, mmc_mk_cons(_str, mmc_mk_cons(_OMC_LIT36, mmc_mk_cons(_v_str, mmc_mk_cons(_OMC_LIT37, mmc_mk_cons(_str2, mmc_mk_cons(_OMC_LIT8, mmc_mk_cons(_str3, mmc_mk_cons(_OMC_LIT35, MMC_REFSTRUCTLIT(mmc_nil))))))))));
          tmp1 = stringAppendList(tmpMeta10);
          goto tmp3_done;
        }
        case 3: {
          modelica_metatype tmpMeta11;
          modelica_metatype tmpMeta12;
          modelica_metatype tmpMeta13;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,2,2) == 0) goto tmp3_end;
          tmpMeta11 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          
          _v = tmpMeta11;
          /* Pattern matching succeeded */
          tmpMeta12 = mmc_mk_cons(_v, MMC_REFSTRUCTLIT(mmc_nil));
          _s = omc_ValuesDump_unparseValues(threadData, tmpMeta12);

          _str3 = omc_TypesDump_printBindingSourceStr(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inBinding), 3))));
          tmpMeta13 = mmc_mk_cons(_OMC_LIT38, mmc_mk_cons(_s, mmc_mk_cons(_OMC_LIT8, mmc_mk_cons(_str3, mmc_mk_cons(_OMC_LIT35, MMC_REFSTRUCTLIT(mmc_nil))))));
          tmp1 = stringAppendList(tmpMeta13);
          goto tmp3_done;
        }
        case 4: {
          
          /* Pattern matching succeeded */
          omc_Error_addInternalError(threadData, _OMC_LIT39, _OMC_LIT41);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _outString = tmp1;
  _return: OMC_LABEL_UNUSED
  return _outString;
}

DLLDirection
modelica_string omc_TypesDump_printVarStr(threadData_t *threadData, modelica_metatype _inVar)
{
  modelica_string _str = NULL;
  modelica_string tmp1 = 0;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _str has no default value.
  { /* matchcontinue expression */
    volatile modelica_metatype tmp4_1;
    tmp4_1 = _inVar;
    {
      modelica_string _vs = NULL;
      modelica_string _n = NULL;
      modelica_metatype _var = NULL;
      modelica_metatype _typ = NULL;
      modelica_metatype _bind = NULL;
      modelica_string _s1 = NULL;
      modelica_string _s2 = NULL;
      volatile mmc_switch_type tmp4;
      int tmp5;
      // _vs has no default value.
      // _n has no default value.
      // _var has no default value.
      // _typ has no default value.
      // _bind has no default value.
      // _s1 has no default value.
      // _s2 has no default value.
      tmp4 = 0;
      MMC_TRY_INTERNAL(mmc_jumper)
      tmp3_top:
      threadData->mmc_jumper = &new_mmc_jumper;
      for (; tmp4 < 2; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          modelica_metatype tmpMeta7;
          modelica_metatype tmpMeta8;
          modelica_metatype tmpMeta9;
          modelica_metatype tmpMeta10;
          modelica_metatype tmpMeta11;
          tmpMeta6 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          tmpMeta7 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 3));
          tmpMeta8 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta7), 4));
          tmpMeta9 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 4));
          tmpMeta10 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 5));
          
          _n = tmpMeta6;
          _var = tmpMeta8;
          _typ = tmpMeta9;
          _bind = tmpMeta10;
          /* Pattern matching succeeded */
          _s1 = omc_TypesDump_printTypeStr(threadData, _typ);

          _vs = omc_SCodeDump_variabilityString(threadData, _var);

          _s2 = omc_TypesDump_printBindingStr(threadData, _bind);
          tmpMeta11 = mmc_mk_cons(_s1, mmc_mk_cons(_OMC_LIT31, mmc_mk_cons(_n, mmc_mk_cons(_OMC_LIT31, mmc_mk_cons(_vs, mmc_mk_cons(_OMC_LIT31, mmc_mk_cons(_s2, MMC_REFSTRUCTLIT(mmc_nil))))))));
          tmp1 = stringAppendList(tmpMeta11);
          goto tmp3_done;
        }
        case 1: {
          modelica_metatype tmpMeta12;
          tmpMeta12 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          
          _n = tmpMeta12;
          /* Pattern matching succeeded */
          tmp1 = _n;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      tmp3_done:
      (void)tmp4;
      MMC_RESTORE_INTERNAL(mmc_jumper);
      goto tmp3_done2;
      goto_2:;
      MMC_CATCH_INTERNAL(mmc_jumper);
      if (++tmp4 < 2) {
        goto tmp3_top;
      }
      MMC_THROW_INTERNAL();
      tmp3_done2:;
    }
  }
  _str = tmp1;
  _return: OMC_LABEL_UNUSED
  return _str;
}

PROTECTED_FUNCTION_STATIC modelica_string omc_TypesDump_unparseParam(threadData_t *threadData, modelica_metatype _inFuncArg)
{
  modelica_string _outString = NULL;
  modelica_string tmp1 = 0;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _outString has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _inFuncArg;
    {
      modelica_string _tstr = NULL;
      modelica_string _id = NULL;
      modelica_string _cstr = NULL;
      modelica_string _estr = NULL;
      modelica_string _pstr = NULL;
      modelica_metatype _ty = NULL;
      modelica_metatype _c = NULL;
      modelica_metatype _p = NULL;
      modelica_metatype _exp = NULL;
      volatile mmc_switch_type tmp4;
      int tmp5;
      // _tstr has no default value.
      // _id has no default value.
      // _cstr has no default value.
      // _estr has no default value.
      // _pstr has no default value.
      // _ty has no default value.
      // _c has no default value.
      // _p has no default value.
      // _exp has no default value.
      tmp4 = 0;
      for (; tmp4 < 2; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          modelica_metatype tmpMeta7;
          modelica_metatype tmpMeta8;
          modelica_metatype tmpMeta9;
          modelica_metatype tmpMeta10;
          modelica_metatype tmpMeta11;
          tmpMeta6 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          tmpMeta7 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 3));
          tmpMeta8 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 4));
          tmpMeta9 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 5));
          tmpMeta10 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 6));
          if (!optionNone(tmpMeta10)) goto tmp3_end;
          _id = tmpMeta6;
          _ty = tmpMeta7;
          _c = tmpMeta8;
          _p = tmpMeta9;
          /* Pattern matching succeeded */
          _tstr = omc_TypesDump_unparseType(threadData, _ty);

          _cstr = omc_TypesDump_constStrFriendly(threadData, _c);

          _pstr = omc_TypesDump_dumpVarParallelismStr(threadData, _p);
          tmpMeta11 = mmc_mk_cons(_tstr, mmc_mk_cons(_OMC_LIT31, mmc_mk_cons(_cstr, mmc_mk_cons(_pstr, mmc_mk_cons(_id, MMC_REFSTRUCTLIT(mmc_nil))))));
          tmp1 = stringAppendList(tmpMeta11);
          goto tmp3_done;
        }
        case 1: {
          modelica_metatype tmpMeta12;
          modelica_metatype tmpMeta13;
          modelica_metatype tmpMeta14;
          modelica_metatype tmpMeta15;
          modelica_metatype tmpMeta16;
          modelica_metatype tmpMeta17;
          modelica_metatype tmpMeta18;
          tmpMeta12 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          tmpMeta13 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 3));
          tmpMeta14 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 4));
          tmpMeta15 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 5));
          tmpMeta16 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 6));
          if (optionNone(tmpMeta16)) goto tmp3_end;
          tmpMeta17 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta16), 1));
          _id = tmpMeta12;
          _ty = tmpMeta13;
          _c = tmpMeta14;
          _p = tmpMeta15;
          _exp = tmpMeta17;
          /* Pattern matching succeeded */
          _tstr = omc_TypesDump_unparseType(threadData, _ty);

          _cstr = omc_TypesDump_constStrFriendly(threadData, _c);

          _estr = omc_ExpressionBasics_printExpStr(threadData, _exp);

          _pstr = omc_TypesDump_dumpVarParallelismStr(threadData, _p);
          tmpMeta18 = mmc_mk_cons(_tstr, mmc_mk_cons(_OMC_LIT31, mmc_mk_cons(_cstr, mmc_mk_cons(_pstr, mmc_mk_cons(_id, mmc_mk_cons(_OMC_LIT42, mmc_mk_cons(_estr, MMC_REFSTRUCTLIT(mmc_nil))))))));
          tmp1 = stringAppendList(tmpMeta18);
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _outString = tmp1;
  _return: OMC_LABEL_UNUSED
  return _outString;
}

DLLDirection
modelica_string omc_TypesDump_connectorTypeStr(threadData_t *threadData, modelica_metatype _ct)
{
  modelica_string _str = NULL;
  modelica_string tmp1 = 0;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _str has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _ct;
    {
      int tmp4;
      {
        switch (MMC_SWITCH_CAST(valueConstructor(tmp4_1))) {
        case 3: {
          
          /* Pattern matching succeeded */
          tmp1 = _OMC_LIT17;
          goto tmp3_done;
        }
        case 4: {
          
          /* Pattern matching succeeded */
          tmp1 = _OMC_LIT43;
          goto tmp3_done;
        }
        case 5: {
          
          /* Pattern matching succeeded */
          tmp1 = _OMC_LIT44;
          goto tmp3_done;
        }
        default:
        tmp3_default: OMC_LABEL_UNUSED; {
          
          /* Pattern matching succeeded */
          tmp1 = _OMC_LIT17;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _str = tmp1;
  _return: OMC_LABEL_UNUSED
  return _str;
}

DLLDirection
modelica_string omc_TypesDump_unparseVar(threadData_t *threadData, modelica_metatype _inVar)
{
  modelica_string _outString = NULL;
  modelica_string tmp1 = 0;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _outString has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _inVar;
    {
      modelica_string _t = NULL;
      modelica_string _n = NULL;
      modelica_string _s = NULL;
      modelica_metatype _typ = NULL;
      modelica_metatype _ct = NULL;
      volatile mmc_switch_type tmp4;
      int tmp5;
      // _t has no default value.
      // _n has no default value.
      // _s has no default value.
      // _typ has no default value.
      // _ct has no default value.
      tmp4 = 0;
      for (; tmp4 < 1; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          modelica_metatype tmpMeta7;
          modelica_metatype tmpMeta8;
          modelica_metatype tmpMeta9;
          modelica_metatype tmpMeta10;
          tmpMeta6 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          tmpMeta7 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 3));
          tmpMeta8 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta7), 2));
          tmpMeta9 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 4));
          
          _n = tmpMeta6;
          _ct = tmpMeta8;
          _typ = tmpMeta9;
          /* Pattern matching succeeded */
          _s = omc_TypesDump_connectorTypeStr(threadData, _ct);

          _t = omc_TypesDump_unparseType(threadData, _typ);
          tmpMeta10 = mmc_mk_cons(_OMC_LIT45, mmc_mk_cons(_s, mmc_mk_cons(_t, mmc_mk_cons(_OMC_LIT31, mmc_mk_cons(_n, mmc_mk_cons(_OMC_LIT46, MMC_REFSTRUCTLIT(mmc_nil)))))));
          tmp1 = stringAppendList(tmpMeta10);
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _outString = tmp1;
  _return: OMC_LABEL_UNUSED
  return _outString;
}

DLLDirection
modelica_string omc_TypesDump_unparseVarAttr(threadData_t *threadData, modelica_metatype _inVar)
{
  modelica_string _outString = NULL;
  modelica_string tmp1 = 0;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _outString has no default value.
  { /* matchcontinue expression */
    volatile modelica_metatype tmp4_1;
    tmp4_1 = _inVar;
    {
      modelica_string _n = NULL;
      modelica_string _bindStr = NULL;
      modelica_string _valStr = NULL;
      modelica_metatype _value = NULL;
      modelica_metatype _e = NULL;
      volatile mmc_switch_type tmp4;
      int tmp5;
      // _n has no default value.
      // _bindStr has no default value.
      // _valStr has no default value.
      // _value has no default value.
      // _e has no default value.
      tmp4 = 0;
      MMC_TRY_INTERNAL(mmc_jumper)
      tmp3_top:
      threadData->mmc_jumper = &new_mmc_jumper;
      for (; tmp4 < 3; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          modelica_metatype tmpMeta7;
          modelica_metatype tmpMeta8;
          modelica_metatype tmpMeta9;
          tmpMeta6 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          tmpMeta7 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 5));
          if (mmc__uniontype__metarecord__typedef__equal(tmpMeta7,1,4) == 0) goto tmp3_end;
          tmpMeta8 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta7), 2));
          
          _n = tmpMeta6;
          _e = tmpMeta8;
          tmp4 += 1; /* Pattern matching succeeded; we may skip some cases if we fail */
          _bindStr = omc_ExpressionBasics_printExpStr(threadData, _e);
          tmpMeta9 = mmc_mk_cons(_n, mmc_mk_cons(_OMC_LIT47, mmc_mk_cons(_bindStr, MMC_REFSTRUCTLIT(mmc_nil))));
          tmp1 = stringAppendList(tmpMeta9);
          goto tmp3_done;
        }
        case 1: {
          modelica_metatype tmpMeta10;
          modelica_metatype tmpMeta11;
          modelica_metatype tmpMeta12;
          modelica_metatype tmpMeta13;
          tmpMeta10 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          tmpMeta11 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 5));
          if (mmc__uniontype__metarecord__typedef__equal(tmpMeta11,2,2) == 0) goto tmp3_end;
          tmpMeta12 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta11), 2));
          
          _n = tmpMeta10;
          _value = tmpMeta12;
          /* Pattern matching succeeded */
          _valStr = omc_ValuesDump_valString(threadData, _value);
          tmpMeta13 = mmc_mk_cons(_n, mmc_mk_cons(_OMC_LIT47, mmc_mk_cons(_valStr, MMC_REFSTRUCTLIT(mmc_nil))));
          tmp1 = stringAppendList(tmpMeta13);
          goto tmp3_done;
        }
        case 2: {
          
          /* Pattern matching succeeded */
          tmp1 = _OMC_LIT17;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      tmp3_done:
      (void)tmp4;
      MMC_RESTORE_INTERNAL(mmc_jumper);
      goto tmp3_done2;
      goto_2:;
      MMC_CATCH_INTERNAL(mmc_jumper);
      if (++tmp4 < 3) {
        goto tmp3_top;
      }
      MMC_THROW_INTERNAL();
      tmp3_done2:;
    }
  }
  _outString = tmp1;
  _return: OMC_LABEL_UNUSED
  return _outString;
}

DLLDirection
modelica_string omc_TypesDump_printParamsStr(threadData_t *threadData, modelica_metatype _inFuncArgLst)
{
  modelica_string _str = NULL;
  modelica_string tmp1 = 0;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _str has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _inFuncArgLst;
    {
      modelica_string _n = NULL;
      modelica_metatype _t = NULL;
      modelica_metatype _params = NULL;
      modelica_string _s1 = NULL;
      modelica_string _s2 = NULL;
      volatile mmc_switch_type tmp4;
      int tmp5;
      // _n has no default value.
      // _t has no default value.
      // _params has no default value.
      // _s1 has no default value.
      // _s2 has no default value.
      tmp4 = 0;
      for (; tmp4 < 3; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          if (!listEmpty(tmp4_1)) goto tmp3_end;
          /* Pattern matching succeeded */
          tmp1 = _OMC_LIT17;
          goto tmp3_done;
        }
        case 1: {
          modelica_metatype tmpMeta6;
          modelica_metatype tmpMeta7;
          modelica_metatype tmpMeta8;
          modelica_metatype tmpMeta9;
          modelica_metatype tmpMeta10;
          if (listEmpty(tmp4_1)) goto tmp3_end;
          tmpMeta6 = MMC_CAR(tmp4_1);
          tmpMeta7 = MMC_CDR(tmp4_1);
          tmpMeta8 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta6), 2));
          tmpMeta9 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta6), 3));
          if (!listEmpty(tmpMeta7)) goto tmp3_end;
          _n = tmpMeta8;
          _t = tmpMeta9;
          /* Pattern matching succeeded */
          _s1 = omc_TypesDump_printTypeStr(threadData, _t);
          tmpMeta10 = mmc_mk_cons(_n, mmc_mk_cons(_OMC_LIT48, mmc_mk_cons(_s1, MMC_REFSTRUCTLIT(mmc_nil))));
          tmp1 = stringAppendList(tmpMeta10);
          goto tmp3_done;
        }
        case 2: {
          modelica_metatype tmpMeta11;
          modelica_metatype tmpMeta12;
          modelica_metatype tmpMeta13;
          modelica_metatype tmpMeta14;
          modelica_metatype tmpMeta15;
          if (listEmpty(tmp4_1)) goto tmp3_end;
          tmpMeta11 = MMC_CAR(tmp4_1);
          tmpMeta12 = MMC_CDR(tmp4_1);
          tmpMeta13 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta11), 2));
          tmpMeta14 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta11), 3));
          
          _n = tmpMeta13;
          _t = tmpMeta14;
          _params = tmpMeta12;
          /* Pattern matching succeeded */
          _s1 = omc_TypesDump_printTypeStr(threadData, _t);

          _s2 = omc_TypesDump_printParamsStr(threadData, _params);
          tmpMeta15 = mmc_mk_cons(_n, mmc_mk_cons(_OMC_LIT48, mmc_mk_cons(_s1, mmc_mk_cons(_OMC_LIT49, mmc_mk_cons(_s2, MMC_REFSTRUCTLIT(mmc_nil))))));
          tmp1 = stringAppendList(tmpMeta15);
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _str = tmp1;
  _return: OMC_LABEL_UNUSED
  return _str;
}

DLLDirection
modelica_string omc_TypesDump_printConnectorTypeStr(threadData_t *threadData, modelica_metatype _it, modelica_string *out_s2)
{
  modelica_string _s = NULL;
  modelica_string _s2 = NULL;
  modelica_string tmp1_c0 __attribute__((unused)) = 0;
  modelica_string tmp1_c1 __attribute__((unused)) = 0;
  modelica_metatype tmpMeta[2] __attribute__((unused)) = {0};
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _s has no default value.
  // _s2 has no default value.
  
  
  { /* matchcontinue expression */
    volatile modelica_metatype tmp4_1;
    tmp4_1 = _it;
    {
      modelica_metatype _connectorName = NULL;
      modelica_metatype _vars = NULL;
      modelica_metatype _varNames = NULL;
      modelica_boolean _isExpandable;
      modelica_string _isExpandableStr = NULL;
      modelica_metatype _t = NULL;
      volatile mmc_switch_type tmp4;
      int tmp5;
      // _connectorName has no default value.
      // _vars has no default value.
      // _varNames has no default value.
      // _isExpandable has no default value.
      // _isExpandableStr has no default value.
      // _t has no default value.
      tmp4 = 0;
      MMC_TRY_INTERNAL(mmc_jumper)
      tmp3_top:
      threadData->mmc_jumper = &new_mmc_jumper;
      for (; tmp4 < 3; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          modelica_metatype tmpMeta7;
          modelica_metatype tmpMeta8;
          modelica_integer tmp9;
          modelica_metatype tmpMeta10;
          modelica_metatype tmpMeta11;
          modelica_metatype tmpMeta12;
          modelica_metatype tmpMeta13;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,9,4) == 0) goto tmp3_end;
          tmpMeta6 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          if (mmc__uniontype__metarecord__typedef__equal(tmpMeta6,5,2) == 0) goto tmp3_end;
          tmpMeta7 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta6), 2));
          tmpMeta8 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta6), 3));
          tmp9 = mmc_unbox_integer(tmpMeta8);
          tmpMeta10 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 3));
          
          _connectorName = tmpMeta7;
          _isExpandable = tmp9  /* pattern as ty=Boolean */;
          _vars = tmpMeta10;
          tmp4 += 1; /* Pattern matching succeeded; we may skip some cases if we fail */
          _varNames = omc_List_map(threadData, _vars, boxvar_TypesDump_getVarName);

          _isExpandableStr = (_isExpandable?_OMC_LIT50:_OMC_LIT17);

          tmpMeta11 = stringAppend(_isExpandableStr,omc_AbsynUtil_pathString(threadData, _connectorName, _OMC_LIT27, 1 /* true */, 0 /* false */));
          _s = tmpMeta11;

          tmpMeta12 = stringAppend(_OMC_LIT51,stringDelimitList(_varNames, _OMC_LIT8));
          tmpMeta13 = stringAppend(tmpMeta12,_OMC_LIT52);
          _s2 = tmpMeta13;
          tmp1_c0 = _s;
          tmp1_c1 = _s2;
          goto tmp3_done;
        }
        case 1: {
          modelica_metatype tmpMeta14;
          modelica_metatype tmpMeta15;
          modelica_metatype tmpMeta16;
          modelica_integer tmp17;
          modelica_metatype tmpMeta18;
          modelica_metatype tmpMeta19;
          modelica_metatype tmpMeta20;
          modelica_metatype tmpMeta21;
          modelica_metatype tmpMeta22;
          modelica_metatype tmpMeta23;
          modelica_metatype tmpMeta24;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,10,4) == 0) goto tmp3_end;
          tmpMeta14 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          if (mmc__uniontype__metarecord__typedef__equal(tmpMeta14,5,2) == 0) goto tmp3_end;
          tmpMeta15 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta14), 2));
          tmpMeta16 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta14), 3));
          tmp17 = mmc_unbox_integer(tmpMeta16);
          tmpMeta18 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 3));
          tmpMeta19 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 4));
          
          _connectorName = tmpMeta15;
          _isExpandable = tmp17  /* pattern as ty=Boolean */;
          _vars = tmpMeta18;
          _t = tmpMeta19;
          /* Pattern matching succeeded */
          _varNames = omc_List_map(threadData, _vars, boxvar_TypesDump_getVarName);

          _isExpandableStr = (_isExpandable?_OMC_LIT50:_OMC_LIT17);

          tmpMeta20 = stringAppend(_isExpandableStr,omc_AbsynUtil_pathString(threadData, _connectorName, _OMC_LIT27, 1 /* true */, 0 /* false */));
          _s = tmpMeta20;

          tmpMeta21 = stringAppend(_OMC_LIT51,stringDelimitList(_varNames, _OMC_LIT8));
          tmpMeta22 = stringAppend(tmpMeta21,_OMC_LIT52);
          tmpMeta23 = stringAppend(tmpMeta22,_OMC_LIT53);
          tmpMeta24 = stringAppend(tmpMeta23,omc_TypesDump_printTypeStr(threadData, _t));
          _s2 = tmpMeta24;
          tmp1_c0 = _s;
          tmp1_c1 = _s2;
          goto tmp3_done;
        }
        case 2: {
          
          /* Pattern matching succeeded */
          tmp1_c0 = _OMC_LIT17;
          tmp1_c1 = omc_TypesDump_unparseType(threadData, _it);
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      tmp3_done:
      (void)tmp4;
      MMC_RESTORE_INTERNAL(mmc_jumper);
      goto tmp3_done2;
      goto_2:;
      MMC_CATCH_INTERNAL(mmc_jumper);
      if (++tmp4 < 3) {
        goto tmp3_top;
      }
      MMC_THROW_INTERNAL();
      tmp3_done2:;
    }
  }
  _s = tmp1_c0;
  _s2 = tmp1_c1;
  _return: OMC_LABEL_UNUSED
  if (out_s2) { *out_s2 = _s2; }
  return _s;
}

DLLDirection
modelica_string omc_TypesDump_printTypeStr(threadData_t *threadData, modelica_metatype _inType)
{
  modelica_string _str = NULL;
  modelica_string tmp1 = 0;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _str has no default value.
  { /* matchcontinue expression */
    volatile modelica_metatype tmp4_1;
    tmp4_1 = _inType;
    {
      modelica_metatype _vars = NULL;
      modelica_metatype _st = NULL;
      modelica_metatype _dims = NULL;
      modelica_metatype _t = NULL;
      modelica_metatype _ty = NULL;
      modelica_metatype _restype = NULL;
      modelica_metatype _params = NULL;
      modelica_metatype _tys = NULL;
      modelica_string _s1 = NULL;
      modelica_string _s2 = NULL;
      modelica_string _compType = NULL;
      volatile mmc_switch_type tmp4;
      int tmp5;
      // _vars has no default value.
      // _st has no default value.
      // _dims has no default value.
      // _t has no default value.
      // _ty has no default value.
      // _restype has no default value.
      // _params has no default value.
      // _tys has no default value.
      // _s1 has no default value.
      // _s2 has no default value.
      // _compType has no default value.
      tmp4 = 0;
      MMC_TRY_INTERNAL(mmc_jumper)
      tmp3_top:
      threadData->mmc_jumper = &new_mmc_jumper;
      for (; tmp4 < 30; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,0,1) == 0) goto tmp3_end;
          tmpMeta6 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          _vars = tmpMeta6;
          tmp4 += 28; /* Pattern matching succeeded; we may skip some cases if we fail */
          tmp1 = omc_List_toString(threadData, _vars, boxvar_TypesDump_printVarStr, _OMC_LIT22, _OMC_LIT54, _OMC_LIT8, _OMC_LIT35, 0 /* false */, ((modelica_integer) 0));
          goto tmp3_done;
        }
        case 1: {
          modelica_metatype tmpMeta7;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,1,1) == 0) goto tmp3_end;
          tmpMeta7 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          _vars = tmpMeta7;
          tmp4 += 27; /* Pattern matching succeeded; we may skip some cases if we fail */
          tmp1 = omc_List_toString(threadData, _vars, boxvar_TypesDump_printVarStr, _OMC_LIT23, _OMC_LIT54, _OMC_LIT8, _OMC_LIT35, 0 /* false */, ((modelica_integer) 0));
          goto tmp3_done;
        }
        case 2: {
          modelica_metatype tmpMeta8;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,2,1) == 0) goto tmp3_end;
          tmpMeta8 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          _vars = tmpMeta8;
          tmp4 += 26; /* Pattern matching succeeded; we may skip some cases if we fail */
          tmp1 = omc_List_toString(threadData, _vars, boxvar_TypesDump_printVarStr, _OMC_LIT24, _OMC_LIT54, _OMC_LIT8, _OMC_LIT35, 0 /* false */, ((modelica_integer) 0));
          goto tmp3_done;
        }
        case 3: {
          modelica_metatype tmpMeta9;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,3,1) == 0) goto tmp3_end;
          tmpMeta9 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          _vars = tmpMeta9;
          tmp4 += 25; /* Pattern matching succeeded; we may skip some cases if we fail */
          tmp1 = omc_List_toString(threadData, _vars, boxvar_TypesDump_printVarStr, _OMC_LIT25, _OMC_LIT54, _OMC_LIT8, _OMC_LIT35, 0 /* false */, ((modelica_integer) 0));
          goto tmp3_done;
        }
        case 4: {
          modelica_metatype tmpMeta10;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,4,1) == 0) goto tmp3_end;
          tmpMeta10 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          _vars = tmpMeta10;
          tmp4 += 24; /* Pattern matching succeeded; we may skip some cases if we fail */
          tmp1 = omc_List_toString(threadData, _vars, boxvar_TypesDump_printVarStr, _OMC_LIT26, _OMC_LIT54, _OMC_LIT8, _OMC_LIT35, 0 /* false */, ((modelica_integer) 0));
          goto tmp3_done;
        }
        case 5: {
          modelica_metatype tmpMeta11;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,5,5) == 0) goto tmp3_end;
          tmpMeta11 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 5));
          
          _vars = tmpMeta11;
          tmp4 += 23; /* Pattern matching succeeded; we may skip some cases if we fail */
          tmp1 = omc_List_toString(threadData, _vars, boxvar_TypesDump_printVarStr, _OMC_LIT55, _OMC_LIT54, _OMC_LIT8, _OMC_LIT35, 0 /* false */, ((modelica_integer) 0));
          goto tmp3_done;
        }
        case 6: {
          modelica_metatype tmpMeta12;
          modelica_metatype tmpMeta13;
          modelica_metatype tmpMeta14;
          modelica_metatype tmpMeta15;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,10,4) == 0) goto tmp3_end;
          tmpMeta12 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          tmpMeta13 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 3));
          tmpMeta14 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 4));
          
          _st = tmpMeta12;
          _vars = tmpMeta13;
          _t = tmpMeta14;
          tmp4 += 22; /* Pattern matching succeeded; we may skip some cases if we fail */
          _compType = omc_TypesDump_printTypeStr(threadData, _t);

          _s1 = omc_ClassInfUtil_printStateStr(threadData, _st);

          _s2 = stringDelimitList(omc_List_map(threadData, _vars, boxvar_TypesDump_printVarStr), _OMC_LIT8);
          tmpMeta15 = mmc_mk_cons(_OMC_LIT56, mmc_mk_cons(_s1, mmc_mk_cons(_OMC_LIT51, mmc_mk_cons(_s2, mmc_mk_cons(_OMC_LIT57, mmc_mk_cons(_compType, mmc_mk_cons(_OMC_LIT35, MMC_REFSTRUCTLIT(mmc_nil))))))));
          tmp1 = stringAppendList(tmpMeta15);
          goto tmp3_done;
        }
        case 7: {
          modelica_metatype tmpMeta16;
          modelica_metatype tmpMeta17;
          modelica_metatype tmpMeta18;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,9,4) == 0) goto tmp3_end;
          tmpMeta16 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          tmpMeta17 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 3));
          
          _st = tmpMeta16;
          _vars = tmpMeta17;
          tmp4 += 21; /* Pattern matching succeeded; we may skip some cases if we fail */
          _s1 = omc_ClassInfUtil_printStateStr(threadData, _st);

          _s2 = stringDelimitList(omc_List_map(threadData, _vars, boxvar_TypesDump_printVarStr), _OMC_LIT8);
          tmpMeta18 = mmc_mk_cons(_OMC_LIT56, mmc_mk_cons(_s1, mmc_mk_cons(_OMC_LIT51, mmc_mk_cons(_s2, mmc_mk_cons(_OMC_LIT58, MMC_REFSTRUCTLIT(mmc_nil))))));
          tmp1 = stringAppendList(tmpMeta18);
          goto tmp3_done;
        }
        case 8: {
          modelica_metatype tmpMeta19;
          modelica_metatype tmpMeta20;
          modelica_metatype tmpMeta21;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,6,2) == 0) goto tmp3_end;
          tmpMeta19 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          tmpMeta20 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 3));
          _t = tmpMeta19;
          _dims = tmpMeta20;
          tmp4 += 20; /* Pattern matching succeeded; we may skip some cases if we fail */
          _s1 = stringDelimitList(omc_List_map(threadData, _dims, boxvar_ExpressionBasics_dimensionString), _OMC_LIT8);

          _s2 = omc_TypesDump_printTypeStr(threadData, _t);
          tmpMeta21 = mmc_mk_cons(_OMC_LIT59, mmc_mk_cons(_s2, mmc_mk_cons(_OMC_LIT60, mmc_mk_cons(_s1, mmc_mk_cons(_OMC_LIT29, MMC_REFSTRUCTLIT(mmc_nil))))));
          tmp1 = stringAppendList(tmpMeta21);
          goto tmp3_done;
        }
        case 9: {
          modelica_metatype tmpMeta22;
          modelica_metatype tmpMeta23;
          modelica_metatype tmpMeta24;
          modelica_metatype tmpMeta25;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,11,4) == 0) goto tmp3_end;
          tmpMeta22 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          tmpMeta23 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 3));
          
          _params = tmpMeta22;
          _restype = tmpMeta23;
          tmp4 += 19; /* Pattern matching succeeded; we may skip some cases if we fail */
          _s1 = omc_TypesDump_printParamsStr(threadData, _params);

          _s2 = omc_TypesDump_printTypeStr(threadData, _restype);

          tmpMeta24 = mmc_mk_cons(_OMC_LIT61, mmc_mk_cons(_s1, mmc_mk_cons(_OMC_LIT62, mmc_mk_cons(_s2, MMC_REFSTRUCTLIT(mmc_nil)))));
          _str = stringAppendList(tmpMeta24);
          tmpMeta25 = stringAppend(_str,omc_AbsynUtil_pathString(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inType), 5))), _OMC_LIT27, 1 /* true */, 0 /* false */));
          tmp1 = tmpMeta25;
          goto tmp3_done;
        }
        case 10: {
          modelica_metatype tmpMeta26;
          modelica_metatype tmpMeta27;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,14,2) == 0) goto tmp3_end;
          tmpMeta26 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          
          _tys = tmpMeta26;
          tmp4 += 18; /* Pattern matching succeeded; we may skip some cases if we fail */
          _s1 = stringDelimitList(omc_List_map(threadData, _tys, boxvar_TypesDump_printTypeStr), _OMC_LIT8);
          tmpMeta27 = mmc_mk_cons(_OMC_LIT54, mmc_mk_cons(_s1, mmc_mk_cons(_OMC_LIT35, MMC_REFSTRUCTLIT(mmc_nil))));
          tmp1 = stringAppendList(tmpMeta27);
          goto tmp3_done;
        }
        case 11: {
          modelica_metatype tmpMeta28;
          modelica_metatype tmpMeta29;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,18,1) == 0) goto tmp3_end;
          tmpMeta28 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          _tys = tmpMeta28;
          tmp4 += 17; /* Pattern matching succeeded; we may skip some cases if we fail */
          tmpMeta29 = mmc_mk_box3(17, &DAE_Type_T__TUPLE__desc, _tys, mmc_mk_none());
          tmp1 = omc_TypesDump_printTypeStr(threadData, tmpMeta29);
          goto tmp3_done;
        }
        case 12: {
          modelica_metatype tmpMeta30;
          modelica_metatype tmpMeta31;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,17,1) == 0) goto tmp3_end;
          tmpMeta30 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          _ty = tmpMeta30;
          tmp4 += 16; /* Pattern matching succeeded; we may skip some cases if we fail */
          _s1 = omc_TypesDump_printTypeStr(threadData, _ty);
          tmpMeta31 = mmc_mk_cons(_OMC_LIT63, mmc_mk_cons(_s1, mmc_mk_cons(_OMC_LIT64, MMC_REFSTRUCTLIT(mmc_nil))));
          tmp1 = stringAppendList(tmpMeta31);
          goto tmp3_done;
        }
        case 13: {
          modelica_metatype tmpMeta32;
          modelica_metatype tmpMeta33;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,19,1) == 0) goto tmp3_end;
          tmpMeta32 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          _ty = tmpMeta32;
          tmp4 += 15; /* Pattern matching succeeded; we may skip some cases if we fail */
          _s1 = omc_TypesDump_printTypeStr(threadData, _ty);
          tmpMeta33 = mmc_mk_cons(_OMC_LIT65, mmc_mk_cons(_s1, mmc_mk_cons(_OMC_LIT64, MMC_REFSTRUCTLIT(mmc_nil))));
          tmp1 = stringAppendList(tmpMeta33);
          goto tmp3_done;
        }
        case 14: {
          modelica_metatype tmpMeta34;
          modelica_metatype tmpMeta35;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,22,1) == 0) goto tmp3_end;
          tmpMeta34 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          _ty = tmpMeta34;
          tmp4 += 14; /* Pattern matching succeeded; we may skip some cases if we fail */
          _s1 = omc_TypesDump_printTypeStr(threadData, _ty);
          tmpMeta35 = mmc_mk_cons(_OMC_LIT66, mmc_mk_cons(_s1, mmc_mk_cons(_OMC_LIT64, MMC_REFSTRUCTLIT(mmc_nil))));
          tmp1 = stringAppendList(tmpMeta35);
          goto tmp3_done;
        }
        case 15: {
          modelica_metatype tmpMeta36;
          modelica_metatype tmpMeta37;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,23,1) == 0) goto tmp3_end;
          tmpMeta36 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          _ty = tmpMeta36;
          tmp4 += 13; /* Pattern matching succeeded; we may skip some cases if we fail */
          _s1 = omc_TypesDump_printTypeStr(threadData, _ty);
          tmpMeta37 = mmc_mk_cons(_OMC_LIT67, mmc_mk_cons(_s1, mmc_mk_cons(_OMC_LIT64, MMC_REFSTRUCTLIT(mmc_nil))));
          tmp1 = stringAppendList(tmpMeta37);
          goto tmp3_done;
        }
        case 16: {
          modelica_metatype tmpMeta38;
          modelica_metatype tmpMeta39;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,24,1) == 0) goto tmp3_end;
          tmpMeta38 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          _s1 = tmpMeta38;
          tmp4 += 12; /* Pattern matching succeeded; we may skip some cases if we fail */
          tmpMeta39 = mmc_mk_cons(_OMC_LIT68, mmc_mk_cons(_s1, mmc_mk_cons(_OMC_LIT64, MMC_REFSTRUCTLIT(mmc_nil))));
          tmp1 = stringAppendList(tmpMeta39);
          goto tmp3_done;
        }
        case 17: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,8,0) == 0) goto tmp3_end;
          tmp4 += 11; /* Pattern matching succeeded; we may skip some cases if we fail */
          tmp1 = _OMC_LIT69;
          goto tmp3_done;
        }
        case 18: {
          modelica_metatype tmpMeta40;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,16,1) == 0) goto tmp3_end;
          tmpMeta40 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          if (!optionNone(tmpMeta40)) goto tmp3_end;
          tmp4 += 10; /* Pattern matching succeeded; we may skip some cases if we fail */
          tmp1 = _OMC_LIT70;
          goto tmp3_done;
        }
        case 19: {
          modelica_metatype tmpMeta41;
          modelica_metatype tmpMeta42;
          modelica_metatype tmpMeta43;
          modelica_metatype tmpMeta44;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,16,1) == 0) goto tmp3_end;
          tmpMeta41 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          if (optionNone(tmpMeta41)) goto tmp3_end;
          tmpMeta42 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta41), 1));
          _st = tmpMeta42;
          tmp4 += 9; /* Pattern matching succeeded; we may skip some cases if we fail */
          _s1 = omc_ClassInfUtil_printStateStr(threadData, _st);
          tmpMeta43 = stringAppend(_OMC_LIT71,_s1);
          tmpMeta44 = stringAppend(tmpMeta43,_OMC_LIT35);
          tmp1 = tmpMeta44;
          goto tmp3_done;
        }
        case 20: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,7,0) == 0) goto tmp3_end;
          tmp4 += 8; /* Pattern matching succeeded; we may skip some cases if we fail */
          tmp1 = _OMC_LIT72;
          goto tmp3_done;
        }
        case 21: {
          modelica_metatype tmpMeta45;
          modelica_metatype tmpMeta46;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,25,1) == 0) goto tmp3_end;
          tmpMeta45 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          _t = tmpMeta45;
          tmp4 += 7; /* Pattern matching succeeded; we may skip some cases if we fail */
          _s1 = omc_TypesDump_printTypeStr(threadData, _t);
          tmpMeta46 = mmc_mk_cons(_OMC_LIT73, mmc_mk_cons(_s1, mmc_mk_cons(_OMC_LIT35, MMC_REFSTRUCTLIT(mmc_nil))));
          tmp1 = stringAppendList(tmpMeta46);
          goto tmp3_done;
        }
        case 22: {
          modelica_metatype tmpMeta47;
          modelica_metatype tmpMeta48;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,21,6) == 0) goto tmp3_end;
          
          _t = tmp4_1;
          tmp4 += 6; /* Pattern matching succeeded; we may skip some cases if we fail */
          _s1 = omc_AbsynUtil_pathStringNoQual(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_t), 2))), _OMC_LIT27, 0 /* false */, 0 /* false */);
          tmpMeta47 = stringAppend(_OMC_LIT74,_s1);
          tmpMeta48 = stringAppend(tmpMeta47,_OMC_LIT74);
          tmp1 = tmpMeta48;
          goto tmp3_done;
        }
        case 23: {
          modelica_metatype tmpMeta49;
          modelica_metatype tmpMeta50;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,20,5) == 0) goto tmp3_end;
          
          _t = tmp4_1;
          tmp4 += 5; /* Pattern matching succeeded; we may skip some cases if we fail */
          _s1 = omc_AbsynUtil_pathStringNoQual(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_t), 6))), _OMC_LIT27, 0 /* false */, 0 /* false */);
          tmpMeta49 = stringAppend(_OMC_LIT74,_s1);
          tmpMeta50 = stringAppend(tmpMeta49,_OMC_LIT74);
          tmp1 = tmpMeta50;
          goto tmp3_done;
        }
        case 24: {
          modelica_metatype tmpMeta51;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,15,1) == 0) goto tmp3_end;
          tmpMeta51 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          if (mmc__uniontype__metarecord__typedef__equal(tmpMeta51,0,0) == 0) goto tmp3_end;
          tmp4 += 4; /* Pattern matching succeeded; we may skip some cases if we fail */
          tmp1 = _OMC_LIT75;
          goto tmp3_done;
        }
        case 25: {
          modelica_metatype tmpMeta52;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,15,1) == 0) goto tmp3_end;
          tmpMeta52 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          if (mmc__uniontype__metarecord__typedef__equal(tmpMeta52,1,0) == 0) goto tmp3_end;
          tmp4 += 3; /* Pattern matching succeeded; we may skip some cases if we fail */
          tmp1 = _OMC_LIT76;
          goto tmp3_done;
        }
        case 26: {
          modelica_metatype tmpMeta53;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,15,1) == 0) goto tmp3_end;
          tmpMeta53 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          if (mmc__uniontype__metarecord__typedef__equal(tmpMeta53,3,0) == 0) goto tmp3_end;
          tmp4 += 2; /* Pattern matching succeeded; we may skip some cases if we fail */
          tmp1 = _OMC_LIT77;
          goto tmp3_done;
        }
        case 27: {
          modelica_metatype tmpMeta54;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,15,1) == 0) goto tmp3_end;
          tmpMeta54 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          if (mmc__uniontype__metarecord__typedef__equal(tmpMeta54,4,0) == 0) goto tmp3_end;
          tmp4 += 1; /* Pattern matching succeeded; we may skip some cases if we fail */
          tmp1 = _OMC_LIT78;
          goto tmp3_done;
        }
        case 28: {
          modelica_metatype tmpMeta55;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,15,1) == 0) goto tmp3_end;
          tmpMeta55 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          if (mmc__uniontype__metarecord__typedef__equal(tmpMeta55,5,0) == 0) goto tmp3_end;
          /* Pattern matching succeeded */
          tmp1 = _OMC_LIT79;
          goto tmp3_done;
        }
        case 29: {
          
          /* Pattern matching succeeded */
          tmp1 = _OMC_LIT80;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      tmp3_done:
      (void)tmp4;
      MMC_RESTORE_INTERNAL(mmc_jumper);
      goto tmp3_done2;
      goto_2:;
      MMC_CATCH_INTERNAL(mmc_jumper);
      if (++tmp4 < 30) {
        goto tmp3_top;
      }
      MMC_THROW_INTERNAL();
      tmp3_done2:;
    }
  }
  _str = tmp1;
  _return: OMC_LABEL_UNUSED
  return _str;
}

DLLDirection
modelica_string omc_TypesDump_printTupleConstStr(threadData_t *threadData, modelica_metatype _inTupleConst)
{
  modelica_string _outString = NULL;
  modelica_string tmp1 = 0;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _outString has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _inTupleConst;
    {
      modelica_string _res = NULL;
      modelica_metatype _c = NULL;
      modelica_metatype _strlist = NULL;
      modelica_metatype _constlist = NULL;
      volatile mmc_switch_type tmp4;
      int tmp5;
      // _res has no default value.
      // _c has no default value.
      // _strlist has no default value.
      // _constlist has no default value.
      tmp4 = 0;
      for (; tmp4 < 2; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,0,1) == 0) goto tmp3_end;
          tmpMeta6 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          _c = tmpMeta6;
          /* Pattern matching succeeded */
          tmp1 = omc_TypesDump_printConstStr(threadData, _c);
          goto tmp3_done;
        }
        case 1: {
          modelica_metatype tmpMeta7;
          modelica_metatype tmpMeta8;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,1,1) == 0) goto tmp3_end;
          tmpMeta7 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          _constlist = tmpMeta7;
          /* Pattern matching succeeded */
          _strlist = omc_List_map(threadData, _constlist, boxvar_TypesDump_printTupleConstStr);

          _res = stringDelimitList(_strlist, _OMC_LIT8);
          tmpMeta8 = mmc_mk_cons(_OMC_LIT54, mmc_mk_cons(_res, mmc_mk_cons(_OMC_LIT35, MMC_REFSTRUCTLIT(mmc_nil))));
          tmp1 = stringAppendList(tmpMeta8);
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _outString = tmp1;
  _return: OMC_LABEL_UNUSED
  return _outString;
}

DLLDirection
modelica_string omc_TypesDump_printConstStr(threadData_t *threadData, modelica_metatype _inConst)
{
  modelica_string _outString = NULL;
  modelica_string tmp1 = 0;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _outString has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _inConst;
    {
      int tmp4;
      {
        switch (MMC_SWITCH_CAST(valueConstructor(tmp4_1))) {
        case 3: {
          
          /* Pattern matching succeeded */
          tmp1 = _OMC_LIT81;
          goto tmp3_done;
        }
        case 4: {
          
          /* Pattern matching succeeded */
          tmp1 = _OMC_LIT82;
          goto tmp3_done;
        }
        case 5: {
          
          /* Pattern matching succeeded */
          tmp1 = _OMC_LIT83;
          goto tmp3_done;
        }
        default:
        tmp3_default: OMC_LABEL_UNUSED; {
          
          /* Pattern matching succeeded */
          omc_Error_addInternalError(threadData, _OMC_LIT84, _OMC_LIT85);
          goto goto_2;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _outString = tmp1;
  _return: OMC_LABEL_UNUSED
  return _outString;
}

DLLDirection
modelica_string omc_TypesDump_unparseConst(threadData_t *threadData, modelica_metatype _inConst)
{
  modelica_string _outString = NULL;
  modelica_string tmp1 = 0;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _outString has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _inConst;
    {
      int tmp4;
      {
        switch (MMC_SWITCH_CAST(valueConstructor(tmp4_1))) {
        case 3: {
          
          /* Pattern matching succeeded */
          tmp1 = _OMC_LIT86;
          goto tmp3_done;
        }
        case 4: {
          
          /* Pattern matching succeeded */
          tmp1 = _OMC_LIT87;
          goto tmp3_done;
        }
        case 5: {
          
          /* Pattern matching succeeded */
          tmp1 = _OMC_LIT88;
          goto tmp3_done;
        }
        case 6: {
          
          /* Pattern matching succeeded */
          tmp1 = _OMC_LIT89;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _outString = tmp1;
  _return: OMC_LABEL_UNUSED
  return _outString;
}

DLLDirection
modelica_string omc_TypesDump_unparsePropTypeNoAttr(threadData_t *threadData, modelica_metatype _inProps)
{
  modelica_string _outString = NULL;
  modelica_string tmp1 = 0;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _outString has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _inProps;
    {
      modelica_metatype _ty = NULL;
      volatile mmc_switch_type tmp4;
      int tmp5;
      // _ty has no default value.
      tmp4 = 0;
      for (; tmp4 < 2; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,0,2) == 0) goto tmp3_end;
          tmpMeta6 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          
          _ty = tmpMeta6;
          /* Pattern matching succeeded */
          tmp1 = omc_TypesDump_unparseTypeNoAttr(threadData, _ty);
          goto tmp3_done;
        }
        case 1: {
          modelica_metatype tmpMeta7;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,1,2) == 0) goto tmp3_end;
          tmpMeta7 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          
          _ty = tmpMeta7;
          /* Pattern matching succeeded */
          tmp1 = omc_TypesDump_unparseTypeNoAttr(threadData, _ty);
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _outString = tmp1;
  _return: OMC_LABEL_UNUSED
  return _outString;
}

DLLDirection
modelica_string omc_TypesDump_unparseTypeNoAttr(threadData_t *threadData, modelica_metatype _inType)
{
  modelica_string _outString = NULL;
  modelica_metatype _ty = NULL;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _outString has no default value.
  // _ty has no default value.
  _ty = omc_TypesDump_stripTypeVars(threadData, _inType, NULL);

  _outString = omc_TypesDump_unparseType(threadData, _ty);
  _return: OMC_LABEL_UNUSED
  return _outString;
}

DLLDirection
modelica_string omc_TypesDump_unparseType(threadData_t *threadData, modelica_metatype _inType)
{
  modelica_string _outString = NULL;
  modelica_string tmp1 = 0;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _outString has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _inType;
    {
      modelica_string _s1 = NULL;
      modelica_string _s2 = NULL;
      modelica_string _str = NULL;
      modelica_string _dims = NULL;
      modelica_string _res = NULL;
      modelica_string _vstr = NULL;
      modelica_string _name = NULL;
      modelica_string _st_str = NULL;
      modelica_string _bc_tp_str = NULL;
      modelica_string _paramstr = NULL;
      modelica_string _restypestr = NULL;
      modelica_string _tystr = NULL;
      modelica_string _funcstr = NULL;
      modelica_metatype _l = NULL;
      modelica_metatype _vars = NULL;
      modelica_metatype _paramstrs = NULL;
      modelica_metatype _tystrs = NULL;
      modelica_metatype _ty = NULL;
      modelica_metatype _bc_tp = NULL;
      modelica_metatype _restype = NULL;
      modelica_metatype _dimlst = NULL;
      modelica_metatype _vs = NULL;
      modelica_metatype _ci_state = NULL;
      modelica_metatype _params = NULL;
      modelica_metatype _path = NULL;
      modelica_metatype _tys = NULL;
      modelica_metatype _codeType = NULL;
      modelica_boolean _b;
      volatile mmc_switch_type tmp4;
      int tmp5;
      // _s1 has no default value.
      // _s2 has no default value.
      // _str has no default value.
      // _dims has no default value.
      // _res has no default value.
      // _vstr has no default value.
      // _name has no default value.
      // _st_str has no default value.
      // _bc_tp_str has no default value.
      // _paramstr has no default value.
      // _restypestr has no default value.
      // _tystr has no default value.
      // _funcstr has no default value.
      // _l has no default value.
      // _vars has no default value.
      // _paramstrs has no default value.
      // _tystrs has no default value.
      // _ty has no default value.
      // _bc_tp has no default value.
      // _restype has no default value.
      // _dimlst has no default value.
      // _vs has no default value.
      // _ci_state has no default value.
      // _params has no default value.
      // _path has no default value.
      // _tys has no default value.
      // _codeType has no default value.
      // _b has no default value.
      tmp4 = 0;
      for (; tmp4 < 34; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,0,1) == 0) goto tmp3_end;
          tmpMeta6 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          if (!listEmpty(tmpMeta6)) goto tmp3_end;
          /* Pattern matching succeeded */
          tmp1 = _OMC_LIT22;
          goto tmp3_done;
        }
        case 1: {
          modelica_metatype tmpMeta7;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,1,1) == 0) goto tmp3_end;
          tmpMeta7 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          if (!listEmpty(tmpMeta7)) goto tmp3_end;
          /* Pattern matching succeeded */
          tmp1 = _OMC_LIT23;
          goto tmp3_done;
        }
        case 2: {
          modelica_metatype tmpMeta8;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,2,1) == 0) goto tmp3_end;
          tmpMeta8 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          if (!listEmpty(tmpMeta8)) goto tmp3_end;
          /* Pattern matching succeeded */
          tmp1 = _OMC_LIT24;
          goto tmp3_done;
        }
        case 3: {
          modelica_metatype tmpMeta9;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,3,1) == 0) goto tmp3_end;
          tmpMeta9 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          if (!listEmpty(tmpMeta9)) goto tmp3_end;
          /* Pattern matching succeeded */
          tmp1 = _OMC_LIT25;
          goto tmp3_done;
        }
        case 4: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,4,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp1 = _OMC_LIT26;
          goto tmp3_done;
        }
        case 5: {
          modelica_metatype tmpMeta10;
          modelica_metatype tmpMeta11;
          modelica_metatype tmpMeta12;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,0,1) == 0) goto tmp3_end;
          tmpMeta10 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          _vs = tmpMeta10;
          /* Pattern matching succeeded */
          _s1 = stringDelimitList(omc_List_map(threadData, _vs, boxvar_TypesDump_unparseVarAttr), _OMC_LIT8);
          tmpMeta11 = stringAppend(_OMC_LIT90,_s1);
          tmpMeta12 = stringAppend(tmpMeta11,_OMC_LIT35);
          tmp1 = tmpMeta12;
          goto tmp3_done;
        }
        case 6: {
          modelica_metatype tmpMeta13;
          modelica_metatype tmpMeta14;
          modelica_metatype tmpMeta15;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,1,1) == 0) goto tmp3_end;
          tmpMeta13 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          _vs = tmpMeta13;
          /* Pattern matching succeeded */
          _s1 = stringDelimitList(omc_List_map(threadData, _vs, boxvar_TypesDump_unparseVarAttr), _OMC_LIT8);
          tmpMeta14 = stringAppend(_OMC_LIT91,_s1);
          tmpMeta15 = stringAppend(tmpMeta14,_OMC_LIT35);
          tmp1 = tmpMeta15;
          goto tmp3_done;
        }
        case 7: {
          modelica_metatype tmpMeta16;
          modelica_metatype tmpMeta17;
          modelica_metatype tmpMeta18;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,2,1) == 0) goto tmp3_end;
          tmpMeta16 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          _vs = tmpMeta16;
          /* Pattern matching succeeded */
          _s1 = stringDelimitList(omc_List_map(threadData, _vs, boxvar_TypesDump_unparseVarAttr), _OMC_LIT8);
          tmpMeta17 = stringAppend(_OMC_LIT92,_s1);
          tmpMeta18 = stringAppend(tmpMeta17,_OMC_LIT35);
          tmp1 = tmpMeta18;
          goto tmp3_done;
        }
        case 8: {
          modelica_metatype tmpMeta19;
          modelica_metatype tmpMeta20;
          modelica_metatype tmpMeta21;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,3,1) == 0) goto tmp3_end;
          tmpMeta19 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          _vs = tmpMeta19;
          /* Pattern matching succeeded */
          _s1 = stringDelimitList(omc_List_map(threadData, _vs, boxvar_TypesDump_unparseVarAttr), _OMC_LIT8);
          tmpMeta20 = stringAppend(_OMC_LIT93,_s1);
          tmpMeta21 = stringAppend(tmpMeta20,_OMC_LIT35);
          tmp1 = tmpMeta21;
          goto tmp3_done;
        }
        case 9: {
          modelica_metatype tmpMeta22;
          modelica_metatype tmpMeta23;
          modelica_metatype tmpMeta24;
          modelica_metatype tmpMeta25;
          modelica_boolean tmp26;
          modelica_string tmp27;
          modelica_metatype tmpMeta28;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,5,5) == 0) goto tmp3_end;
          tmpMeta22 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 3));
          tmpMeta23 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 4));
          
          _path = tmpMeta22;
          _l = tmpMeta23;
          /* Pattern matching succeeded */
          tmp26 = (modelica_boolean)omc_Config_typeinfo(threadData);
          if(tmp26)
          {
            tmpMeta24 = stringAppend(_OMC_LIT94,omc_AbsynUtil_pathString(threadData, _path, _OMC_LIT27, 1 /* true */, 0 /* false */));
            tmpMeta25 = stringAppend(tmpMeta24,_OMC_LIT95);
            tmp27 = tmpMeta25;
          }
          else
          {
            tmp27 = _OMC_LIT54;
          }
          _s1 = tmp27;

          _s2 = stringDelimitList(_l, _OMC_LIT8);
          tmpMeta28 = mmc_mk_cons(_OMC_LIT96, mmc_mk_cons(_s1, mmc_mk_cons(_s2, mmc_mk_cons(_OMC_LIT35, MMC_REFSTRUCTLIT(mmc_nil)))));
          tmp1 = stringAppendList(tmpMeta28);
          goto tmp3_done;
        }
        case 10: {
          modelica_metatype tmpMeta29;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,6,2) == 0) goto tmp3_end;
          
          _ty = tmp4_1;
          /* Pattern matching succeeded */
          _ty = omc_TypesDump_flattenArrayType(threadData, _ty ,&_dimlst);

          _tystr = omc_TypesDump_unparseType(threadData, _ty);

          _dims = omc_TypesDump_printDimensionsStr(threadData, _dimlst);
          tmpMeta29 = mmc_mk_cons(_tystr, mmc_mk_cons(_OMC_LIT28, mmc_mk_cons(_dims, mmc_mk_cons(_OMC_LIT29, MMC_REFSTRUCTLIT(mmc_nil)))));
          tmp1 = stringAppendList(tmpMeta29);
          goto tmp3_done;
        }
        case 11: {
          modelica_metatype tmpMeta30;
          modelica_metatype tmpMeta31;
          modelica_metatype tmpMeta32;
          modelica_metatype tmpMeta33;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,9,4) == 0) goto tmp3_end;
          tmpMeta30 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          if (mmc__uniontype__metarecord__typedef__equal(tmpMeta30,3,1) == 0) goto tmp3_end;
          tmpMeta31 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta30), 2));
          tmpMeta32 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 3));
          
          _path = tmpMeta31;
          _vs = tmpMeta32;
          /* Pattern matching succeeded */
          _name = omc_AbsynUtil_pathStringNoQual(threadData, _path, _OMC_LIT27, 0 /* false */, 0 /* false */);

          _vars = omc_List_map(threadData, _vs, boxvar_TypesDump_unparseVar);

          _vstr = stringAppendList(_vars);
          tmpMeta33 = mmc_mk_cons(_OMC_LIT97, mmc_mk_cons(_name, mmc_mk_cons(_OMC_LIT98, mmc_mk_cons(_vstr, mmc_mk_cons(_OMC_LIT99, mmc_mk_cons(_name, mmc_mk_cons(_OMC_LIT100, MMC_REFSTRUCTLIT(mmc_nil))))))));
          tmp1 = stringAppendList(tmpMeta33);
          goto tmp3_done;
        }
        case 12: {
          modelica_metatype tmpMeta34;
          modelica_metatype tmpMeta35;
          modelica_metatype tmpMeta36;
          modelica_integer tmp37;
          modelica_metatype tmpMeta38;
          modelica_metatype tmpMeta39;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,9,4) == 0) goto tmp3_end;
          tmpMeta34 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          if (mmc__uniontype__metarecord__typedef__equal(tmpMeta34,5,2) == 0) goto tmp3_end;
          tmpMeta35 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta34), 2));
          tmpMeta36 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmpMeta34), 3));
          tmp37 = mmc_unbox_integer(tmpMeta36);
          tmpMeta38 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 3));
          
          _path = tmpMeta35;
          _b = tmp37  /* pattern as ty=Boolean */;
          _vs = tmpMeta38;
          /* Pattern matching succeeded */
          _name = omc_AbsynUtil_pathStringNoQual(threadData, _path, _OMC_LIT27, 0 /* false */, 0 /* false */);

          _vars = omc_List_map(threadData, _vs, boxvar_TypesDump_unparseVar);

          _vstr = stringAppendList(_vars);

          _str = (_b?_OMC_LIT101:_OMC_LIT17);
          tmpMeta39 = mmc_mk_cons(_str, mmc_mk_cons(_OMC_LIT102, mmc_mk_cons(_name, mmc_mk_cons(_OMC_LIT98, mmc_mk_cons(_vstr, mmc_mk_cons(_OMC_LIT99, mmc_mk_cons(_name, mmc_mk_cons(_OMC_LIT100, MMC_REFSTRUCTLIT(mmc_nil)))))))));
          tmp1 = stringAppendList(tmpMeta39);
          goto tmp3_done;
        }
        case 13: {
          modelica_metatype tmpMeta40;
          modelica_metatype tmpMeta41;
          modelica_metatype tmpMeta42;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,10,4) == 0) goto tmp3_end;
          tmpMeta40 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          tmpMeta41 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 4));
          
          _ci_state = tmpMeta40;
          _bc_tp = tmpMeta41;
          /* Pattern matching succeeded */
          _st_str = omc_AbsynUtil_pathString(threadData, omc_ClassInfUtil_getStateName(threadData, _ci_state), _OMC_LIT27, 1 /* true */, 0 /* false */);

          _res = omc_ClassInfUtil_printStateStr(threadData, _ci_state);

          _bc_tp_str = omc_TypesDump_unparseType(threadData, _bc_tp);
          tmpMeta42 = mmc_mk_cons(_OMC_LIT54, mmc_mk_cons(_res, mmc_mk_cons(_OMC_LIT31, mmc_mk_cons(_st_str, mmc_mk_cons(_OMC_LIT103, mmc_mk_cons(_bc_tp_str, mmc_mk_cons(_OMC_LIT35, MMC_REFSTRUCTLIT(mmc_nil))))))));
          tmp1 = stringAppendList(tmpMeta42);
          goto tmp3_done;
        }
        case 14: {
          modelica_metatype tmpMeta43;
          modelica_metatype tmpMeta44;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,9,4) == 0) goto tmp3_end;
          tmpMeta43 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          
          _ci_state = tmpMeta43;
          /* Pattern matching succeeded */
          _st_str = omc_AbsynUtil_pathString(threadData, omc_ClassInfUtil_getStateName(threadData, _ci_state), _OMC_LIT27, 1 /* true */, 0 /* false */);

          _res = omc_ClassInfUtil_printStateStr(threadData, _ci_state);
          tmpMeta44 = mmc_mk_cons(_res, mmc_mk_cons(_OMC_LIT31, mmc_mk_cons(_st_str, MMC_REFSTRUCTLIT(mmc_nil))));
          tmp1 = stringAppendList(tmpMeta44);
          goto tmp3_done;
        }
        case 15: {
          modelica_metatype tmpMeta45;
          modelica_metatype tmpMeta46;
          modelica_metatype tmpMeta47;
          modelica_metatype tmpMeta48;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,11,4) == 0) goto tmp3_end;
          tmpMeta45 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          tmpMeta46 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 3));
          tmpMeta47 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 5));
          _params = tmpMeta45;
          _restype = tmpMeta46;
          _path = tmpMeta47;
          /* Pattern matching succeeded */
          _funcstr = omc_AbsynUtil_pathString(threadData, _path, _OMC_LIT27, 1 /* true */, 0 /* false */);

          _paramstrs = omc_List_map(threadData, _params, boxvar_TypesDump_unparseParam);

          _paramstr = stringDelimitList(_paramstrs, _OMC_LIT8);

          _restypestr = omc_TypesDump_unparseType(threadData, _restype);
          tmpMeta48 = mmc_mk_cons(_funcstr, mmc_mk_cons(_OMC_LIT104, mmc_mk_cons(_paramstr, mmc_mk_cons(_OMC_LIT62, mmc_mk_cons(_restypestr, MMC_REFSTRUCTLIT(mmc_nil))))));
          tmp1 = stringAppendList(tmpMeta48);
          goto tmp3_done;
        }
        case 16: {
          modelica_metatype tmpMeta49;
          modelica_metatype tmpMeta50;
          modelica_metatype tmpMeta66;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,14,2) == 0) goto tmp3_end;
          tmpMeta49 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          
          _tys = tmpMeta49;
          /* Pattern matching succeeded */
          { /* match expression */
            modelica_metatype tmp53_1;
            tmp53_1 = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inType), 3)));
            {
              modelica_metatype _names = NULL;
              volatile mmc_switch_type tmp53;
              int tmp54;
              // _names has no default value.
              tmp53 = 0;
              for (; tmp53 < 2; tmp53++) {
                switch (MMC_SWITCH_CAST(tmp53)) {
                case 0: {
                  modelica_metatype tmpMeta55;
                  modelica_metatype tmpMeta56;
                  if (optionNone(tmp53_1)) goto tmp52_end;
                  tmpMeta55 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp53_1), 1));
                  _names = tmpMeta55;
                  /* Pattern matching succeeded */
                  {
                    modelica_metatype __omcQ_24tmpVar1;
                    modelica_metatype* tmp57;
                    modelica_metatype tmpMeta58;
                    modelica_metatype tmpMeta59;
                    modelica_metatype tmpMeta60;
                    modelica_string __omcQ_24tmpVar0;
                    modelica_integer tmp61;
                    modelica_metatype _t_loopVar = 0;
                    modelica_metatype _t;
                    modelica_metatype _n_loopVar = 0;
                    modelica_metatype _n;
                    _t_loopVar = _tys;
                    _n_loopVar = _names;
                    tmpMeta58 = MMC_REFSTRUCTLIT(mmc_nil);
                    __omcQ_24tmpVar1 = tmpMeta58; /* defaultValue */
                    tmp57 = &__omcQ_24tmpVar1;
                    while(1) {
                      tmp61 = 2;
                      if (!listEmpty(_t_loopVar)) {
                        _t = MMC_CAR(_t_loopVar);
                        _t_loopVar = MMC_CDR(_t_loopVar);
                        tmp61--;
                      }if (!listEmpty(_n_loopVar)) {
                        _n = MMC_CAR(_n_loopVar);
                        _n_loopVar = MMC_CDR(_n_loopVar);
                        tmp61--;
                      }
                      if (tmp61 == 0) {
                        tmpMeta59 = stringAppend(omc_TypesDump_unparseType(threadData, _t),_OMC_LIT31);
                        tmpMeta60 = stringAppend(tmpMeta59,_n);
                        __omcQ_24tmpVar0 = tmpMeta60;
                        *tmp57 = mmc_mk_cons(__omcQ_24tmpVar0,0);
                        tmp57 = &MMC_CDR(*tmp57);
                      } else if (tmp61 == 2) {
                        break;
                      } else {
                        goto goto_51;
                      }
                    }
                    *tmp57 = mmc_mk_nil();
                    tmpMeta56 = __omcQ_24tmpVar1;
                  }
                  tmpMeta50 = tmpMeta56;
                  goto tmp52_done;
                }
                case 1: {
                  modelica_metatype tmpMeta62;
                  
                  /* Pattern matching succeeded */
                  {
                    modelica_metatype __omcQ_24tmpVar3;
                    modelica_metatype* tmp63;
                    modelica_metatype tmpMeta64;
                    modelica_string __omcQ_24tmpVar2;
                    modelica_integer tmp65;
                    modelica_metatype _t_loopVar = 0;
                    modelica_metatype _t;
                    _t_loopVar = _tys;
                    tmpMeta64 = MMC_REFSTRUCTLIT(mmc_nil);
                    __omcQ_24tmpVar3 = tmpMeta64; /* defaultValue */
                    tmp63 = &__omcQ_24tmpVar3;
                    while(1) {
                      tmp65 = 1;
                      if (!listEmpty(_t_loopVar)) {
                        _t = MMC_CAR(_t_loopVar);
                        _t_loopVar = MMC_CDR(_t_loopVar);
                        tmp65--;
                      }
                      if (tmp65 == 0) {
                        __omcQ_24tmpVar2 = omc_TypesDump_unparseType(threadData, _t);
                        *tmp63 = mmc_mk_cons(__omcQ_24tmpVar2,0);
                        tmp63 = &MMC_CDR(*tmp63);
                      } else if (tmp65 == 1) {
                        break;
                      } else {
                        goto goto_51;
                      }
                    }
                    *tmp63 = mmc_mk_nil();
                    tmpMeta62 = __omcQ_24tmpVar3;
                  }
                  tmpMeta50 = tmpMeta62;
                  goto tmp52_done;
                }
                }
                goto tmp52_end;
                tmp52_end: ;
              }
              goto goto_51;
              goto_51:;
              goto goto_2;
              goto tmp52_done;
              tmp52_done:;
            }
          }
          _tystrs = tmpMeta50;

          _tystr = stringDelimitList(_tystrs, _OMC_LIT8);
          tmpMeta66 = mmc_mk_cons(_OMC_LIT54, mmc_mk_cons(_tystr, mmc_mk_cons(_OMC_LIT35, MMC_REFSTRUCTLIT(mmc_nil))));
          tmp1 = stringAppendList(tmpMeta66);
          goto tmp3_done;
        }
        case 17: {
          modelica_metatype tmpMeta67;
          modelica_metatype tmpMeta68;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,18,1) == 0) goto tmp3_end;
          tmpMeta67 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          _tys = tmpMeta67;
          /* Pattern matching succeeded */
          _tystrs = omc_List_map(threadData, _tys, boxvar_TypesDump_unparseType);

          _tystr = stringDelimitList(_tystrs, _OMC_LIT8);
          tmpMeta68 = mmc_mk_cons(_OMC_LIT105, mmc_mk_cons(_tystr, mmc_mk_cons(_OMC_LIT64, MMC_REFSTRUCTLIT(mmc_nil))));
          tmp1 = stringAppendList(tmpMeta68);
          goto tmp3_done;
        }
        case 18: {
          modelica_metatype tmpMeta69;
          modelica_metatype tmpMeta70;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,17,1) == 0) goto tmp3_end;
          tmpMeta69 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          _ty = tmpMeta69;
          /* Pattern matching succeeded */
          _tystr = omc_TypesDump_unparseType(threadData, _ty);
          tmpMeta70 = mmc_mk_cons(_OMC_LIT63, mmc_mk_cons(_tystr, mmc_mk_cons(_OMC_LIT64, MMC_REFSTRUCTLIT(mmc_nil))));
          tmp1 = stringAppendList(tmpMeta70);
          goto tmp3_done;
        }
        case 19: {
          modelica_metatype tmpMeta71;
          modelica_metatype tmpMeta72;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,22,1) == 0) goto tmp3_end;
          tmpMeta71 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          _ty = tmpMeta71;
          /* Pattern matching succeeded */
          _tystr = omc_TypesDump_unparseType(threadData, _ty);
          tmpMeta72 = mmc_mk_cons(_OMC_LIT66, mmc_mk_cons(_tystr, mmc_mk_cons(_OMC_LIT64, MMC_REFSTRUCTLIT(mmc_nil))));
          tmp1 = stringAppendList(tmpMeta72);
          goto tmp3_done;
        }
        case 20: {
          modelica_metatype tmpMeta73;
          modelica_metatype tmpMeta74;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,24,1) == 0) goto tmp3_end;
          tmpMeta73 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          _tystr = tmpMeta73;
          /* Pattern matching succeeded */
          tmpMeta74 = mmc_mk_cons(_OMC_LIT68, mmc_mk_cons(_tystr, mmc_mk_cons(_OMC_LIT64, MMC_REFSTRUCTLIT(mmc_nil))));
          tmp1 = stringAppendList(tmpMeta74);
          goto tmp3_done;
        }
        case 21: {
          modelica_metatype tmpMeta75;
          modelica_metatype tmpMeta76;
          modelica_metatype tmpMeta80;
          modelica_metatype tmpMeta81;
          modelica_boolean tmp82;
          modelica_string tmp83;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,20,5) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          _res = omc_AbsynUtil_pathStringNoQual(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inType), 6))), _OMC_LIT27, 0 /* false */, 0 /* false */);
          tmp82 = (modelica_boolean)listEmpty((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inType), 3))));
          if(tmp82)
          {
            tmp83 = _res;
          }
          else
          {
            tmpMeta75 = stringAppend(_res,_OMC_LIT106);
            {
              modelica_metatype __omcQ_24tmpVar5;
              modelica_metatype* tmp77;
              modelica_metatype tmpMeta78;
              modelica_string __omcQ_24tmpVar4;
              modelica_integer tmp79;
              modelica_metatype _tv_loopVar = 0;
              modelica_metatype _tv;
              _tv_loopVar = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inType), 3)));
              tmpMeta78 = MMC_REFSTRUCTLIT(mmc_nil);
              __omcQ_24tmpVar5 = tmpMeta78; /* defaultValue */
              tmp77 = &__omcQ_24tmpVar5;
              while(1) {
                tmp79 = 1;
                if (!listEmpty(_tv_loopVar)) {
                  _tv = MMC_CAR(_tv_loopVar);
                  _tv_loopVar = MMC_CDR(_tv_loopVar);
                  tmp79--;
                }
                if (tmp79 == 0) {
                  __omcQ_24tmpVar4 = omc_TypesDump_unparseType(threadData, _tv);
                  *tmp77 = mmc_mk_cons(__omcQ_24tmpVar4,0);
                  tmp77 = &MMC_CDR(*tmp77);
                } else if (tmp79 == 1) {
                  break;
                } else {
                  goto goto_2;
                }
              }
              *tmp77 = mmc_mk_nil();
              tmpMeta76 = __omcQ_24tmpVar5;
            }
            tmpMeta80 = stringAppend(tmpMeta75,stringDelimitList(tmpMeta76, _OMC_LIT107));
            tmpMeta81 = stringAppend(tmpMeta80,_OMC_LIT64);
            tmp83 = tmpMeta81;
          }
          tmp1 = tmp83;
          goto tmp3_done;
        }
        case 22: {
          modelica_metatype tmpMeta84;
          modelica_metatype tmpMeta85;
          modelica_metatype tmpMeta89;
          modelica_metatype tmpMeta90;
          modelica_boolean tmp91;
          modelica_string tmp92;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,21,6) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          _res = omc_AbsynUtil_pathStringNoQual(threadData, (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inType), 2))), _OMC_LIT27, 0 /* false */, 0 /* false */);
          tmp91 = (modelica_boolean)listEmpty((MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inType), 4))));
          if(tmp91)
          {
            tmp92 = _res;
          }
          else
          {
            tmpMeta84 = stringAppend(_res,_OMC_LIT106);
            {
              modelica_metatype __omcQ_24tmpVar7;
              modelica_metatype* tmp86;
              modelica_metatype tmpMeta87;
              modelica_string __omcQ_24tmpVar6;
              modelica_integer tmp88;
              modelica_metatype _tv_loopVar = 0;
              modelica_metatype _tv;
              _tv_loopVar = (MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(_inType), 4)));
              tmpMeta87 = MMC_REFSTRUCTLIT(mmc_nil);
              __omcQ_24tmpVar7 = tmpMeta87; /* defaultValue */
              tmp86 = &__omcQ_24tmpVar7;
              while(1) {
                tmp88 = 1;
                if (!listEmpty(_tv_loopVar)) {
                  _tv = MMC_CAR(_tv_loopVar);
                  _tv_loopVar = MMC_CDR(_tv_loopVar);
                  tmp88--;
                }
                if (tmp88 == 0) {
                  __omcQ_24tmpVar6 = omc_TypesDump_unparseType(threadData, _tv);
                  *tmp86 = mmc_mk_cons(__omcQ_24tmpVar6,0);
                  tmp86 = &MMC_CDR(*tmp86);
                } else if (tmp88 == 1) {
                  break;
                } else {
                  goto goto_2;
                }
              }
              *tmp86 = mmc_mk_nil();
              tmpMeta85 = __omcQ_24tmpVar7;
            }
            tmpMeta89 = stringAppend(tmpMeta84,stringDelimitList(tmpMeta85, _OMC_LIT107));
            tmpMeta90 = stringAppend(tmpMeta89,_OMC_LIT64);
            tmp92 = tmpMeta90;
          }
          tmp1 = tmp92;
          goto tmp3_done;
        }
        case 23: {
          modelica_metatype tmpMeta93;
          modelica_metatype tmpMeta94;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,23,1) == 0) goto tmp3_end;
          tmpMeta93 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          _ty = tmpMeta93;
          /* Pattern matching succeeded */
          _res = omc_TypesDump_unparseType(threadData, _ty);
          tmpMeta94 = stringAppend(_OMC_LIT74,_res);
          tmp1 = tmpMeta94;
          goto tmp3_done;
        }
        case 24: {
          modelica_metatype tmpMeta95;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,19,1) == 0) goto tmp3_end;
          tmpMeta95 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          if (mmc__uniontype__metarecord__typedef__equal(tmpMeta95,8,0) == 0) goto tmp3_end;
          /* Pattern matching succeeded */
          tmp1 = _OMC_LIT108;
          goto tmp3_done;
        }
        case 25: {
          modelica_metatype tmpMeta96;
          modelica_metatype tmpMeta97;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,19,1) == 0) goto tmp3_end;
          tmpMeta96 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          _ty = tmpMeta96;
          /* Pattern matching succeeded */
          _tystr = omc_TypesDump_unparseType(threadData, _ty);
          tmpMeta97 = mmc_mk_cons(_OMC_LIT65, mmc_mk_cons(_tystr, mmc_mk_cons(_OMC_LIT64, MMC_REFSTRUCTLIT(mmc_nil))));
          tmp1 = stringAppendList(tmpMeta97);
          goto tmp3_done;
        }
        case 26: {
          modelica_metatype tmpMeta98;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,25,1) == 0) goto tmp3_end;
          tmpMeta98 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          _ty = tmpMeta98;
          /* Pattern matching succeeded */
          /* Tail recursive call */
          _inType = _ty;
          goto _tailrecursive;
          /* TODO: Make sure any eventual dead code below is never generated */
          goto tmp3_done;
        }
        case 27: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,7,0) == 0) goto tmp3_end;
          /* Pattern matching succeeded */
          tmp1 = _OMC_LIT109;
          goto tmp3_done;
        }
        case 28: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,8,0) == 0) goto tmp3_end;
          /* Pattern matching succeeded */
          tmp1 = _OMC_LIT110;
          goto tmp3_done;
        }
        case 29: {
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,16,1) == 0) goto tmp3_end;
          
          /* Pattern matching succeeded */
          tmp1 = _OMC_LIT111;
          goto tmp3_done;
        }
        case 30: {
          modelica_metatype tmpMeta99;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,15,1) == 0) goto tmp3_end;
          tmpMeta99 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          _codeType = tmpMeta99;
          /* Pattern matching succeeded */
          tmp1 = omc_TypesDump_printCodeTypeStr(threadData, _codeType);
          goto tmp3_done;
        }
        case 31: {
          modelica_metatype tmpMeta100;
          modelica_metatype tmpMeta101;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,12,1) == 0) goto tmp3_end;
          tmpMeta100 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          _ty = tmpMeta100;
          /* Pattern matching succeeded */
          tmpMeta101 = stringAppend(_OMC_LIT112,omc_TypesDump_unparseType(threadData, _ty));
          tmp1 = tmpMeta101;
          goto tmp3_done;
        }
        case 32: {
          modelica_metatype tmpMeta102;
          modelica_metatype tmpMeta103;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,13,2) == 0) goto tmp3_end;
          tmpMeta102 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 3));
          _ty = tmpMeta102;
          /* Pattern matching succeeded */
          tmpMeta103 = stringAppend(_OMC_LIT113,omc_TypesDump_unparseType(threadData, _ty));
          tmp1 = tmpMeta103;
          goto tmp3_done;
        }
        case 33: {
          
          /* Pattern matching succeeded */
          tmp1 = _OMC_LIT114;
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _outString = tmp1;
  _return: OMC_LABEL_UNUSED
  return _outString;
}

DLLDirection
modelica_string omc_TypesDump_unparseOptionEqMod(threadData_t *threadData, modelica_metatype _eq)
{
  modelica_string _str = NULL;
  modelica_string tmp1 = 0;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _str has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _eq;
    {
      modelica_metatype _e = NULL;
      volatile mmc_switch_type tmp4;
      int tmp5;
      // _e has no default value.
      tmp4 = 0;
      for (; tmp4 < 2; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          if (!optionNone(tmp4_1)) goto tmp3_end;
          /* Pattern matching succeeded */
          tmp1 = _OMC_LIT115;
          goto tmp3_done;
        }
        case 1: {
          modelica_metatype tmpMeta6;
          if (optionNone(tmp4_1)) goto tmp3_end;
          tmpMeta6 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 1));
          _e = tmpMeta6;
          /* Pattern matching succeeded */
          tmp1 = omc_TypesDump_unparseEqMod(threadData, _e);
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _str = tmp1;
  _return: OMC_LABEL_UNUSED
  return _str;
}

DLLDirection
modelica_string omc_TypesDump_unparseEqMod(threadData_t *threadData, modelica_metatype _eq)
{
  modelica_string _str = NULL;
  modelica_string tmp1 = 0;
  MMC_SO();
  _tailrecursive: OMC_LABEL_UNUSED
  // _str has no default value.
  { /* match expression */
    modelica_metatype tmp4_1;
    tmp4_1 = _eq;
    {
      modelica_metatype _e = NULL;
      modelica_metatype _e2 = NULL;
      volatile mmc_switch_type tmp4;
      int tmp5;
      // _e has no default value.
      // _e2 has no default value.
      tmp4 = 0;
      for (; tmp4 < 2; tmp4++) {
        switch (MMC_SWITCH_CAST(tmp4)) {
        case 0: {
          modelica_metatype tmpMeta6;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,0,5) == 0) goto tmp3_end;
          tmpMeta6 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          
          _e = tmpMeta6;
          /* Pattern matching succeeded */
          tmp1 = omc_ExpressionBasics_printExpStr(threadData, _e);
          goto tmp3_done;
        }
        case 1: {
          modelica_metatype tmpMeta7;
          if (mmc__uniontype__metarecord__typedef__equal(tmp4_1,1,1) == 0) goto tmp3_end;
          tmpMeta7 = MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(tmp4_1), 2));
          _e2 = tmpMeta7;
          /* Pattern matching succeeded */
          tmp1 = omc_Dump_printExpStr(threadData, _e2);
          goto tmp3_done;
        }
        }
        goto tmp3_end;
        tmp3_end: ;
      }
      goto goto_2;
      goto_2:;
      MMC_THROW_INTERNAL();
      goto tmp3_done;
      tmp3_done:;
    }
  }
  _str = tmp1;
  _return: OMC_LABEL_UNUSED
  return _str;
}

