type ULimit = Double(Unit="µm", range=(0.0..]) type PMass = Double(Unit="U", range=[0.0..]) type ParametricDist = { AD_type: Integer(Unit="U", range=[1 ..]), AD_param1: Double(Unit="U"), AD_param2: Optional( Double(Unit="U")) } type NumericDist = { AD_type: Integer(Unit="U", range=0), AD_dist_classes: Integer(Unit="U", range=[1 ..]), AD_dist: (ULimit, PMass)[1 ..] } type AggreDist = | ParametricDist | NumericDist /* Output of dbt & dbv files: TYPE_DEFINITIONS 4 TYPE_DEFINITION 5 ULimit 23 TYPE_REFERENCE 10 Double 23 TYPE_ANNOTATION 11 Unit 23 "Ám" 30 TYPE_ANNOTATION 11 range 23 ( 40 0.0 26 .. 39 ] 38 TYPE_DEFINITION 5 PMass 23 TYPE_REFERENCE 10 Double 23 TYPE_ANNOTATION 11 Unit 23 "U" 30 TYPE_ANNOTATION 11 range 23 [ 37 0.0 26 .. 39 ] 38 TYPE_DEFINITION 5 ParametricDist 23 RECORD_TYPE 7 TYPE_COMPONENT 12 AD_type 23 TYPE_REFERENCE 10 Integer 23 TYPE_ANNOTATION 11 Unit 23 "U" 30 TYPE_ANNOTATION 11 range 23 [ 37 1 24 .. 39 ] 38 TYPE_COMPONENT 12 AD_param1 23 TYPE_REFERENCE 10 Double 23 TYPE_ANNOTATION 11 Unit 23 "U" 30 TYPE_COMPONENT 12 AD_param2 23 TYPE_REFERENCE 10 Optional 23 TYPE_REFERENCE 10 Double 23 TYPE_ANNOTATION 11 Unit 23 "U" 30 TYPE_DEFINITION 5 NumericDist 23 RECORD_TYPE 7 TYPE_COMPONENT 12 AD_type 23 TYPE_REFERENCE 10 Integer 23 TYPE_ANNOTATION 11 Unit 23 "U" 30 TYPE_ANNOTATION 11 range 23 0 24 TYPE_COMPONENT 12 AD_dist_classes 23 TYPE_REFERENCE 10 Integer 23 TYPE_ANNOTATION 11 Unit 23 "U" 30 TYPE_ANNOTATION 11 range 23 [ 37 1 24 .. 39 ] 38 TYPE_COMPONENT 12 AD_dist 23 ARRAY_TYPE 9 TUPLE_TYPE 8 TYPE_REFERENCE 10 ULimit 23 TYPE_REFERENCE 10 PMass 23 1 24 .. 39 TYPE_DEFINITION 5 AggreDist 23 UNION_TYPE 6 TYPE_COMPONENT 12 ParametricDist 23 TYPE_COMPONENT 12 NumericDist 23 */