Index: ruby/trunk/lib/adl_parser/lib/parser.rb
===================================================================
--- ruby/trunk/lib/adl_parser/lib/parser.rb	(revision 326)
+++ ruby/trunk/lib/adl_parser/lib/parser.rb	(revision 328)
@@ -14,9 +14,4 @@
 require 'rubygems'
 require 'open_ehr'
-#require 'adl_parser.rb'
-#require 'am.rb'
-#require 'rm.rb'
-#require 'rm/support/assumed_types.rb'
-#require 'assumed_library_types.rb'
 $DEBUG = true
 
@@ -27,5 +22,5 @@
     class Parser < Racc::Parser
 
-module_eval(<<'...end parser.y/module_eval...', 'parser.y', 1368)
+module_eval(<<'...end parser.y/module_eval...', 'parser.y', 1417)
 
 def assert_at(file,line, message = "")
@@ -63,5 +58,5 @@
 
 
-def parse(data, filename, lineno = 1, debug = false)
+def parse(data, filename = "", lineno = 1, debug = false)
   @yydebug = true
   @parsestring = data
@@ -1426,8 +1421,15 @@
 module_eval(<<'.,.,', 'parser.y', 128)
   def _reduce_19(val, _values, result)
-        if val[1][0][:attr_id] == "original_language"
-      result = {:arch_language => val[1][0][:object_block][:untyped_primitive_object_block]}
+        dadl_section = val[1]
+    @@logger.debug("#{__FILE__}:#{__LINE__}: arch_language::dadl_section = \n#{dadl_section.to_yaml}")
+    case dadl_section[:attr_id]
+    when "translations"
+      result = {:arch_language => dadl_section[:object_block][:untyped_primitive_object_block]}
+    when "original_language"
+      result = {:arch_language => dadl_section[:object_block][:untyped_primitive_object_block]}
+###     if val[1][:attr_id] == "original_language"
+###       result = {:arch_language => val[0][:object_block][:untyped_primitive_object_block]}
     else
-      raise OpenEhr::ADL::Exception::Parser::Error, "It should be 'original_language' at #{@filename}:#{@lineno} "
+      raise OpenEhr::ADL::Exception::Parser::Error, "It should be 'original_language, but was #{dadl_section[:attr_id]}' at #{@filename}:#{@lineno} "
     end
   
@@ -1440,42 +1442,43 @@
 # reduce 21 omitted
 
-module_eval(<<'.,.,', 'parser.y', 143)
+module_eval(<<'.,.,', 'parser.y', 150)
   def _reduce_22(val, _values, result)
         args = Hash.new
     val[1].each do |item|
-      @@logger.debug("#{__FILE__}:#{__LINE__}: arch_description: item[:object_block] = #{item[:object_block].to_yaml} at #{@filename}:#{@lineno}")
-      case item[:attr_id]
+      @@logger.debug("#{__FILE__}:#{__LINE__}: arch_description: item = #{item.to_yaml} at #{@filename}:#{@lineno}")
+      case item
       when "original_author"
         unless item[:object_block][:type_identifier]
-          args.merge!(Hash[:original_author => item[:object_block][:untyped_multiple_attr_object_block]])
+          args.merge!(Hash[:original_author => item[:untyped_multiple_attr_object_block]])
         else
           raise OpenEhr::ADL::Exception::Parser::Error, "Needless type_identifier at #{@filename}:#{@lineno} "
         end
       when "details"
-        unless item[:object_block][:type_identifier]
-          args.merge!(Hash[:details => item[:object_block][:untyped_multiple_attr_object_block]])
+        unless item[:type_identifier]
+          args.merge!(Hash[:details => item[:untyped_multiple_attr_object_block]])
+          #args.merge!(Hash[:details => item[:object_block]])
         else
           raise OpenEhr::ADL::Exception::Parser::Error, "Needless type_identifier at #{@filename}:#{@lineno} "
         end
       when "lifecycle_state"
-        unless item[:object_block][:type_identifier]
-          args.merge!(Hash[:lifecycle_state => item[:object_block][:untyped_primitive_object_block]])
+        unless item[:type_identifier]
+          args.merge!(Hash[:lifecycle_state => item[:untyped_primitive_object_block]])
         else
           raise OpenEhr::ADL::Exception::Parser::Error, "Needless type_identifier at #{@filename}:#{@lineno} "
         end
       when "other_contributors"
-        unless item[:object_block][:type_identifier]
-          args.merge!(Hash[:other_contributors => item[:object_block][:untyped_multiple_attr_object_block]])
+        unless item[:type_identifier]
+          args.merge!(Hash[:other_contributors => item[:untyped_multiple_attr_object_block]])
         else
           raise OpenEhr::ADL::Exception::Parser::Error, "Needless type_identifier at #{@filename}:#{@lineno} "
         end
       when "other_details"
-        unless item[:object_block][:type_identifier]
-          args.merge!(Hash[:other_contributors => item[:object_block][:untyped_multiple_attr_object_block]])
+        unless item[:type_identifier]
+          args.merge!(Hash[:other_contributors => item[:untyped_multiple_attr_object_block]])
         else
           raise OpenEhr::ADL::Exception::Parser::Error, "Needless type_identifier at #{@filename}:#{@lineno} "
         end
       else
-        raise OpenEhr::ADL::Exception::Parser::Error, "Unknown case #{item[:attr_id]} at #{@filename}:#{@lineno} "
+        raise OpenEhr::ADL::Exception::Parser::Error, "Unknown case #{item} at #{@filename}:#{@lineno} "
       end
     end
@@ -1489,5 +1492,5 @@
 # reduce 23 omitted
 
-module_eval(<<'.,.,', 'parser.y', 190)
+module_eval(<<'.,.,', 'parser.y', 198)
   def _reduce_24(val, _values, result)
         result = val[1]
@@ -1499,5 +1502,5 @@
 # reduce 25 omitted
 
-module_eval(<<'.,.,', 'parser.y', 198)
+module_eval(<<'.,.,', 'parser.y', 206)
   def _reduce_26(val, _values, result)
         assert_at(__FILE__,__LINE__){val[0].instance_of?(OpenEhr::AM::Archetype::ConstraintModel::C_COMPLEX_OBJECT)}
@@ -1509,5 +1512,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 204)
+module_eval(<<'.,.,', 'parser.y', 212)
   def _reduce_27(val, _values, result)
         result = val[0]
@@ -1517,5 +1520,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 212)
+module_eval(<<'.,.,', 'parser.y', 220)
   def _reduce_28(val, _values, result)
         @@logger.debug("#{__FILE__}:#{__LINE__}:c_complx_object = \n c_complx_object_head = #{val[0].to_yaml}")
@@ -1530,5 +1533,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 222)
+module_eval(<<'.,.,', 'parser.y', 230)
   def _reduce_29(val, _values, result)
         result = OpenEhr::AM::Archetype::ConstraintModel::C_COMPLEX_OBJECT.create(:attributes => val[3]) do |c_complex_object|
@@ -1542,5 +1545,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 234)
+module_eval(<<'.,.,', 'parser.y', 242)
   def _reduce_30(val, _values, result)
         @@logger.debug("#{__FILE__}:#{__LINE__}: c_complex_object_head: c_complex_object_id => #{val[0]}, c_occurrences => #{val[1]}")
@@ -1551,5 +1554,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 240)
+module_eval(<<'.,.,', 'parser.y', 248)
   def _reduce_31(val, _values, result)
         result = {:type_identifier => val[0]}
@@ -1559,5 +1562,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 244)
+module_eval(<<'.,.,', 'parser.y', 252)
   def _reduce_32(val, _values, result)
         result = {:type_identifier => val[0], :local_term_code_ref => val[1]}
@@ -1569,5 +1572,5 @@
 # reduce 33 omitted
 
-module_eval(<<'.,.,', 'parser.y', 250)
+module_eval(<<'.,.,', 'parser.y', 258)
   def _reduce_34(val, _values, result)
         result = OpenEhr::AM::Archetype::ConstraintModel::C_COMPLEX_OBJECT.new(:attributes => val[0])
@@ -1577,5 +1580,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 268)
+module_eval(<<'.,.,', 'parser.y', 276)
   def _reduce_35(val, _values, result)
         @@logger.debug("#{__FILE__}:#{__LINE__}: c_complex_object = #{val[0].inspect} at #{@filename}:#{@lineno}")
@@ -1586,5 +1589,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 273)
+module_eval(<<'.,.,', 'parser.y', 281)
   def _reduce_36(val, _values, result)
         result = OpenEhr::AM::Archetype::ConstraintModel::ARCHETYPE_INTERNAL_REF.create do |archetype_internal_ref|
@@ -1598,5 +1601,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 281)
+module_eval(<<'.,.,', 'parser.y', 289)
   def _reduce_37(val, _values, result)
         result = val[0]
@@ -1606,5 +1609,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 285)
+module_eval(<<'.,.,', 'parser.y', 293)
   def _reduce_38(val, _values, result)
         result = OpenEhr::AM::Archetype::ConstraintModel::CONSTRAINT_REF.create do |constraint_ref|
@@ -1616,5 +1619,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 291)
+module_eval(<<'.,.,', 'parser.y', 299)
   def _reduce_39(val, _values, result)
         result = val[0]
@@ -1624,5 +1627,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 295)
+module_eval(<<'.,.,', 'parser.y', 303)
   def _reduce_40(val, _values, result)
         result = val[0]
@@ -1632,5 +1635,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 299)
+module_eval(<<'.,.,', 'parser.y', 307)
   def _reduce_41(val, _values, result)
         result = val[0]
@@ -1640,5 +1643,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 303)
+module_eval(<<'.,.,', 'parser.y', 311)
   def _reduce_42(val, _values, result)
         result = val[0]
@@ -1652,5 +1655,5 @@
 # reduce 44 omitted
 
-module_eval(<<'.,.,', 'parser.y', 336)
+module_eval(<<'.,.,', 'parser.y', 344)
   def _reduce_45(val, _values, result)
         result = val[1]
@@ -1660,5 +1663,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 342)
+module_eval(<<'.,.,', 'parser.y', 350)
   def _reduce_46(val, _values, result)
         result = {:type_identifier => val[1], :c_occurrences => val[2], :absolute_path => val[3] }
@@ -1670,5 +1673,5 @@
 # reduce 47 omitted
 
-module_eval(<<'.,.,', 'parser.y', 349)
+module_eval(<<'.,.,', 'parser.y', 357)
   def _reduce_48(val, _values, result)
         result = OpenEhr::AM::Archetype::ConstraintModel::ARCHETYPE_SLOT.create do |archetype_slot|
@@ -1683,5 +1686,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 358)
+module_eval(<<'.,.,', 'parser.y', 366)
   def _reduce_49(val, _values, result)
         result = {:c_archetype_slot_id => val[0],:c_occurrences => val[1]}
@@ -1691,5 +1694,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 363)
+module_eval(<<'.,.,', 'parser.y', 371)
   def _reduce_50(val, _values, result)
         result = val[1]
@@ -1703,5 +1706,5 @@
 # reduce 52 omitted
 
-module_eval(<<'.,.,', 'parser.y', 371)
+module_eval(<<'.,.,', 'parser.y', 379)
   def _reduce_53(val, _values, result)
         assert_at(__FILE__,__LINE__){val[0].kind_of?(OpenEhr::AM::Archetype::ConstraintModel::Primitive::C_PRIMITIVE)}
@@ -1714,5 +1717,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 379)
+module_eval(<<'.,.,', 'parser.y', 387)
   def _reduce_54(val, _values, result)
         @@logger.debug("#{__FILE__}:#{__LINE__}: c_integer = #{val[0]} at #{@filename}:#{@lineno}")
@@ -1727,5 +1730,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 388)
+module_eval(<<'.,.,', 'parser.y', 396)
   def _reduce_55(val, _values, result)
         @@logger.debug("#{__FILE__}:#{__LINE__}: c_real = #{val[0]} at #{@filename}:#{@lineno}")
@@ -1736,5 +1739,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 393)
+module_eval(<<'.,.,', 'parser.y', 401)
   def _reduce_56(val, _values, result)
         @@logger.debug("#{__FILE__}:#{__LINE__}: c_date = #{val[0]} at #{@filename}:#{@lineno}")
@@ -1745,5 +1748,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 398)
+module_eval(<<'.,.,', 'parser.y', 406)
   def _reduce_57(val, _values, result)
         @@logger.debug("#{__FILE__}:#{__LINE__}: c_time = #{val[0]} at #{@filename}:#{@lineno}")
@@ -1754,5 +1757,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 403)
+module_eval(<<'.,.,', 'parser.y', 411)
   def _reduce_58(val, _values, result)
         @@logger.debug("#{__FILE__}:#{__LINE__}: c_date_time = #{val[0]} at #{@filename}:#{@lineno}")
@@ -1763,5 +1766,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 408)
+module_eval(<<'.,.,', 'parser.y', 416)
   def _reduce_59(val, _values, result)
         @@logger.debug("#{__FILE__}:#{__LINE__}: c_duration = #{val[0]} at #{@filename}:#{@lineno}")
@@ -1772,5 +1775,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 413)
+module_eval(<<'.,.,', 'parser.y', 421)
   def _reduce_60(val, _values, result)
         @@logger.debug("#{__FILE__}:#{__LINE__}: c_string = #{val[0]} at #{@filename}:#{@lineno}")
@@ -1781,5 +1784,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 418)
+module_eval(<<'.,.,', 'parser.y', 426)
   def _reduce_61(val, _values, result)
         assert_at(__FILE__,__LINE__){val[0].instance_of?(OpenEhr::AM::Archetype::ConstraintModel::Primitive::C_BOOLEAN)}
@@ -1793,5 +1796,5 @@
 # reduce 62 omitted
 
-module_eval(<<'.,.,', 'parser.y', 430)
+module_eval(<<'.,.,', 'parser.y', 438)
   def _reduce_63(val, _values, result)
         result = [val[0]]
@@ -1801,5 +1804,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 434)
+module_eval(<<'.,.,', 'parser.y', 442)
   def _reduce_64(val, _values, result)
         result = (val[0] << val[1])
@@ -1809,5 +1812,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 440)
+module_eval(<<'.,.,', 'parser.y', 448)
   def _reduce_65(val, _values, result)
         @@logger.debug("#{__FILE__}:#{__LINE__}:c_attribute: #{val[0]} matches #{val[3]}")
@@ -1821,5 +1824,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 448)
+module_eval(<<'.,.,', 'parser.y', 456)
   def _reduce_66(val, _values, result)
         @@logger.debug("c_attribute: #{val[0]} matches #{val[3]}}")
@@ -1831,5 +1834,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 455)
+module_eval(<<'.,.,', 'parser.y', 463)
   def _reduce_67(val, _values, result)
         @@logger.debug("c_attribute: #{val[0]} matches #{val[5]}}")
@@ -1841,5 +1844,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 461)
+module_eval(<<'.,.,', 'parser.y', 469)
   def _reduce_68(val, _values, result)
         assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEhr::AM::Archetype::ConstraintModel::C_ATTRIBUTE)}
@@ -1850,5 +1853,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 468)
+module_eval(<<'.,.,', 'parser.y', 476)
   def _reduce_69(val, _values, result)
         @@logger.debug("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER = #{val[0]}, c_existence = #{val[1]} at #{@filename}")
@@ -1863,5 +1866,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 477)
+module_eval(<<'.,.,', 'parser.y', 485)
   def _reduce_70(val, _values, result)
         assert_at(__FILE__,__LINE__){ val[2].instance_of?(OpenEhr::AM::Archetype::ConstraintModel::CARDINALITY) }
@@ -1877,5 +1880,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 488)
+module_eval(<<'.,.,', 'parser.y', 496)
   def _reduce_71(val, _values, result)
         result = Array[val[0]]
@@ -1885,5 +1888,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 492)
+module_eval(<<'.,.,', 'parser.y', 500)
   def _reduce_72(val, _values, result)
         result = (val[0] << val[1])
@@ -1893,5 +1896,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 496)
+module_eval(<<'.,.,', 'parser.y', 504)
   def _reduce_73(val, _values, result)
         result = Array[val[0]]
@@ -1903,5 +1906,5 @@
 # reduce 74 omitted
 
-module_eval(<<'.,.,', 'parser.y', 502)
+module_eval(<<'.,.,', 'parser.y', 510)
   def _reduce_75(val, _values, result)
         @@logger.debug("#{__FILE__}:#{__LINE__}: c_includes: assertions = #{val[1]}") 
@@ -1914,5 +1917,5 @@
 # reduce 76 omitted
 
-module_eval(<<'.,.,', 'parser.y', 511)
+module_eval(<<'.,.,', 'parser.y', 519)
   def _reduce_77(val, _values, result)
         @@logger.debug("#{__FILE__}:#{__LINE__}: c_excludes: assertions = #{val[1]}") 
@@ -1939,8 +1942,39 @@
 # reduce 85 omitted
 
-module_eval(<<'.,.,', 'parser.y', 534)
+module_eval(<<'.,.,', 'parser.y', 542)
   def _reduce_86(val, _values, result)
         dadl_section = val[1]
-    result = OpenEhr::AM::Archetype::Ontology::ARCHETYPE_ONTOLOGY.new
+    @@logger.debug("#{__FILE__}:#{__LINE__}: arch_ontology: dadl_section = #{val[1].to_yaml}") 
+    args = Hash.new
+    dadl_section.each do |item|
+      @@logger.debug("#{__FILE__}:#{__LINE__}: arch_description: item[:object_block] = #{item[:object_block].to_yaml} at #{@filename}:#{@lineno}")
+      case item[:attr_id]
+      when "terminologies_available"
+        unless item[:object_block][:type_identifier]
+          args.merge!(Hash[:terminologies_available => item[:object_block][:untyped_primitive_object_block]])
+          #args.merge!(Hash[:terminologies_available => item[:object_block]])
+        else
+          raise OpenEhr::ADL::Exception::Parser::Error, "Needless type_identifier at #{@filename}:#{@lineno} "
+        end
+      when "term_definitions"
+        unless item[:object_block][:type_identifier]
+          args.merge!(Hash[:term_definitions => item[:object_block][:untyped_multiple_attr_object_block]])
+          #args.merge!(Hash[:term_definitions => item[:object_block]])
+        else
+          raise OpenEhr::ADL::Exception::Parser::Error, "Needless type_identifier at #{@filename}:#{@lineno} "
+        end
+      when "term_binding"
+        unless item[:object_block][:type_identifier]
+          args.merge!(Hash[:term_binding => item[:object_block][:untyped_multiple_attr_object_block]])
+          #args.merge!(Hash[:term_binding => item[:object_block]])
+        else
+          raise OpenEhr::ADL::Exception::Parser::Error, "Needless type_identifier at #{@filename}:#{@lineno} "
+        end
+      else
+        raise OpenEhr::ADL::Exception::Parser::Error, "Unknown case #{item[:attr_id]} at #{@filename}:#{@lineno} "
+      end
+    end
+
+    result = OpenEhr::AM::Archetype::Ontology::ARCHETYPE_ONTOLOGY.new(args)
   
     result
@@ -1952,7 +1986,7 @@
 # reduce 88 omitted
 
-module_eval(<<'.,.,', 'parser.y', 544)
+module_eval(<<'.,.,', 'parser.y', 583)
   def _reduce_89(val, _values, result)
-        #@@logger.debug("#{__FILE__}:#{__LINE__}:dadl_section attr_vals = \n#{val[0].to_yaml}")
+        @@logger.debug("#{__FILE__}:#{__LINE__}:dadl_section::attr_vals = \n#{val[0].to_yaml}")
     result = val[0]
   
@@ -1961,7 +1995,7 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 549)
+module_eval(<<'.,.,', 'parser.y', 588)
   def _reduce_90(val, _values, result)
-        #@@logger.debug("#{__FILE__}:#{__LINE__}:dadl_section complex_object_block = \n#{val[0].to_yaml}")
+        #@@logger.debug("#{__FILE__}:#{__LINE__}:dadl_section::complex_object_block = \n#{val[0].to_yaml}")
     result = val[0]
   
@@ -1970,31 +2004,32 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 556)
+module_eval(<<'.,.,', 'parser.y', 595)
   def _reduce_91(val, _values, result)
-        result = Array[val[0]]
-  
-    result
-  end
-.,.,
-
-module_eval(<<'.,.,', 'parser.y', 560)
+        attr_val = val[0]
+    result = Hash[attr_val[:attr_id] => attr_val[:object_block]]
+  
+    result
+  end
+.,.,
+
+module_eval(<<'.,.,', 'parser.y', 600)
   def _reduce_92(val, _values, result)
-        result = (val[0] << val[1])
-  
-    result
-  end
-.,.,
-
-module_eval(<<'.,.,', 'parser.y', 564)
+        result = val[0].merge!(val[1])
+  
+    result
+  end
+.,.,
+
+module_eval(<<'.,.,', 'parser.y', 604)
   def _reduce_93(val, _values, result)
-        result = (val[0] << val[2])
-  
-    result
-  end
-.,.,
-
-module_eval(<<'.,.,', 'parser.y', 569)
+        result = val[0].merge!(val[2])
+  
+    result
+  end
+.,.,
+
+module_eval(<<'.,.,', 'parser.y', 621)
   def _reduce_94(val, _values, result)
-        @@logger.debug("#{__FILE__}:#{__LINE__}:attr_val\n attr_id = #{val[0]}, object_block = #{val[1]}")
+        @@logger.debug("#{__FILE__}:#{__LINE__}:attr_val\n attr_id = #{val[0].to_yaml},\n object_block = #{val[2].to_yaml}")
     result = {:attr_id => val[0], :object_block => val[2]}
   
@@ -2003,5 +2038,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 575)
+module_eval(<<'.,.,', 'parser.y', 627)
   def _reduce_95(val, _values, result)
         @@logger.debug("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER = #{val[0]}")
@@ -2014,5 +2049,5 @@
 # reduce 96 omitted
 
-module_eval(<<'.,.,', 'parser.y', 582)
+module_eval(<<'.,.,', 'parser.y', 634)
   def _reduce_97(val, _values, result)
         result = val[0]
@@ -2022,5 +2057,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 586)
+module_eval(<<'.,.,', 'parser.y', 638)
   def _reduce_98(val, _values, result)
         result = val[0]
@@ -2030,5 +2065,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 591)
+module_eval(<<'.,.,', 'parser.y', 643)
   def _reduce_99(val, _values, result)
         result = val[0]
@@ -2038,5 +2073,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 595)
+module_eval(<<'.,.,', 'parser.y', 647)
   def _reduce_100(val, _values, result)
         result = val[0]
@@ -2046,13 +2081,14 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 600)
+module_eval(<<'.,.,', 'parser.y', 652)
   def _reduce_101(val, _values, result)
-        result = {:untyped_multiple_attr_object_block => val[0]}
-  
-    result
-  end
-.,.,
-
-module_eval(<<'.,.,', 'parser.y', 604)
+        @@logger.debug("#{__FILE__}:#{__LINE__}:multiple_attr_object_block::attr_val\n untyped_multiple_attr_object_block = #{val[0].to_yaml}")
+    result = {:untyped_multiple_attr_object_block => val[0]}
+  
+    result
+  end
+.,.,
+
+module_eval(<<'.,.,', 'parser.y', 657)
   def _reduce_102(val, _values, result)
         result = {:type_identifier => val[0], :untyped_multiple_attr_object_block => val[1]}
@@ -2062,13 +2098,14 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 609)
+module_eval(<<'.,.,', 'parser.y', 662)
   def _reduce_103(val, _values, result)
-        result = val[1]
-  
-    result
-  end
-.,.,
-
-module_eval(<<'.,.,', 'parser.y', 614)
+        @@logger.debug("#{__FILE__}:#{__LINE__}:untyped_multiple_attr_object_block::keyed_objects\n keyed_objects = #{val[1].to_yaml}")
+    result = val[1]
+  
+    result
+  end
+.,.,
+
+module_eval(<<'.,.,', 'parser.y', 668)
   def _reduce_104(val, _values, result)
         result = val[0]
@@ -2078,5 +2115,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 619)
+module_eval(<<'.,.,', 'parser.y', 673)
   def _reduce_105(val, _values, result)
         result = Array[val[0]]
@@ -2086,5 +2123,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 623)
+module_eval(<<'.,.,', 'parser.y', 677)
   def _reduce_106(val, _values, result)
         result = (val[0] << val[1])
@@ -2094,10 +2131,11 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 628)
+module_eval(<<'.,.,', 'parser.y', 682)
   def _reduce_107(val, _values, result)
         #@@logger.debug("#{__FILE__}:#{__LINE__}: keyed_object = #{val[0]} at #{@filename}:#{@lineno}")
     #result = {:object_key => val[0], :object_block => val[2]}
-    unless val[2][:type_identifier]
-      result = Hash[val[0] => val[2][:untyped_primitive_object_block]]
+    object_key,object_block = val[0],val[2]
+    unless object_block[:type_identifier]
+      result = Hash[val[0] => object_block[:untyped_primitive_object_block]]
     else
       raise OpenEhr::ADL::Exception::Parser::Error, "Missing type_identifier at #{@filename}:#{@lineno} "
@@ -2108,5 +2146,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 639)
+module_eval(<<'.,.,', 'parser.y', 694)
   def _reduce_108(val, _values, result)
         @@logger.debug("object_key: [#{val[1]}] at #{@filename}:#{@lineno}")
@@ -2117,5 +2155,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 645)
+module_eval(<<'.,.,', 'parser.y', 700)
   def _reduce_109(val, _values, result)
         result = {:untyped_single_attr_object_block => val[0]}
@@ -2125,5 +2163,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 649)
+module_eval(<<'.,.,', 'parser.y', 704)
   def _reduce_110(val, _values, result)
         result = {:type_identifier => val[0], :untyped_single_attr_object_block => val[1]}
@@ -2133,8 +2171,7 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 654)
+module_eval(<<'.,.,', 'parser.y', 709)
   def _reduce_111(val, _values, result)
         @@logger.debug("#{__FILE__}:#{__LINE__}: single_attr_object_complex_head = #{val[0]} at #{@filename}:#{@lineno}")
-    #result = {:single_attr_object_complex_head => val[0]}
     result = []
   
@@ -2143,8 +2180,7 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 660)
+module_eval(<<'.,.,', 'parser.y', 714)
   def _reduce_112(val, _values, result)
-        @@logger.debug("#{__FILE__}:#{__LINE__}: attr_vals = #{val[1]} at #{@filename}:#{@lineno}")
-    #result = {:single_attr_object_complex_head => val[0], :attr_vals => val[1]}
+        @@logger.debug("#{__FILE__}:#{__LINE__}: untyped_single_attr_object_block::attr_vals = \n#{val[1].to_yaml} at #{@filename}:#{@lineno}")
     result = val[1]
   
@@ -2155,5 +2191,5 @@
 # reduce 113 omitted
 
-module_eval(<<'.,.,', 'parser.y', 667)
+module_eval(<<'.,.,', 'parser.y', 721)
   def _reduce_114(val, _values, result)
         @@logger.debug("#{__FILE__}:#{__LINE__}: untyped_primitive_object_block = #{val[0]} at #{@filename}:#{@lineno}")
@@ -2164,5 +2200,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 672)
+module_eval(<<'.,.,', 'parser.y', 726)
   def _reduce_115(val, _values, result)
         @@logger.debug("#{__FILE__}:#{__LINE__}: type_identifier = #{val[0]}, untyped_primitive_object_block = #{val[1]} at #{@filename}:#{@lineno}")
@@ -2173,5 +2209,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 677)
+module_eval(<<'.,.,', 'parser.y', 731)
   def _reduce_116(val, _values, result)
         #@@logger.debug("#{__FILE__}:#{__LINE__}: primitive_object_block = <#{val[1]}> at #{@filename}:#{@lineno}")
@@ -2182,5 +2218,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 682)
+module_eval(<<'.,.,', 'parser.y', 736)
   def _reduce_117(val, _values, result)
         result = val[0]
@@ -2190,5 +2226,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 686)
+module_eval(<<'.,.,', 'parser.y', 740)
   def _reduce_118(val, _values, result)
         result = val[0]
@@ -2198,5 +2234,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 690)
+module_eval(<<'.,.,', 'parser.y', 744)
   def _reduce_119(val, _values, result)
         result = val[0]
@@ -2206,5 +2242,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 694)
+module_eval(<<'.,.,', 'parser.y', 748)
   def _reduce_120(val, _values, result)
         result = val[0]
@@ -2214,5 +2250,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 698)
+module_eval(<<'.,.,', 'parser.y', 752)
   def _reduce_121(val, _values, result)
         result = val[0]
@@ -2222,5 +2258,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 702)
+module_eval(<<'.,.,', 'parser.y', 756)
   def _reduce_122(val, _values, result)
         @@logger.debug("string_value: #{val[0]} at #{@filename}:#{@lineno}")
@@ -2231,5 +2267,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 707)
+module_eval(<<'.,.,', 'parser.y', 761)
   def _reduce_123(val, _values, result)
         @@logger.debug("integer_value: #{val[0]} at #{@filename}:#{@lineno}")
@@ -2240,5 +2276,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 712)
+module_eval(<<'.,.,', 'parser.y', 766)
   def _reduce_124(val, _values, result)
         @@logger.debug("real_value: #{val[0]} at #{@filename}:#{@lineno}")
@@ -2249,5 +2285,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 717)
+module_eval(<<'.,.,', 'parser.y', 771)
   def _reduce_125(val, _values, result)
         @@logger.debug("boolean_value: #{val[0]} at #{@filename}:#{@lineno}")
@@ -2258,5 +2294,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 722)
+module_eval(<<'.,.,', 'parser.y', 776)
   def _reduce_126(val, _values, result)
         @@logger.debug("character_value: #{val[0]} at #{@filename}:#{@lineno}")
@@ -2267,5 +2303,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 727)
+module_eval(<<'.,.,', 'parser.y', 781)
   def _reduce_127(val, _values, result)
         @@logger.debug("date_value: #{val[0]} at #{@filename}:#{@lineno}")
@@ -2276,5 +2312,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 732)
+module_eval(<<'.,.,', 'parser.y', 786)
   def _reduce_128(val, _values, result)
         @@logger.debug("time_value: #{val[0]} at #{@filename}:#{@lineno}")
@@ -2285,5 +2321,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 737)
+module_eval(<<'.,.,', 'parser.y', 791)
   def _reduce_129(val, _values, result)
         @@logger.debug("date_time_value: #{val[0]} at #{@filename}:#{@lineno}")
@@ -2294,5 +2330,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 742)
+module_eval(<<'.,.,', 'parser.y', 796)
   def _reduce_130(val, _values, result)
         @@logger.debug("duration_value: #{val[0]} at #{@filename}:#{@lineno}")
@@ -2303,5 +2339,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 747)
+module_eval(<<'.,.,', 'parser.y', 801)
   def _reduce_131(val, _values, result)
         @@logger.debug("uri_value: #{val[0]} at #{@filename}:#{@lineno}")
@@ -2312,5 +2348,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 753)
+module_eval(<<'.,.,', 'parser.y', 807)
   def _reduce_132(val, _values, result)
         @@logger.debug("string_list_value: #{val[0]} at #{@filename}:#{@lineno}")
@@ -2321,5 +2357,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 758)
+module_eval(<<'.,.,', 'parser.y', 812)
   def _reduce_133(val, _values, result)
         result = val[0]
@@ -2329,5 +2365,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 762)
+module_eval(<<'.,.,', 'parser.y', 816)
   def _reduce_134(val, _values, result)
         result = val[0]
@@ -2337,5 +2373,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 766)
+module_eval(<<'.,.,', 'parser.y', 820)
   def _reduce_135(val, _values, result)
         result = val[0]
@@ -2345,5 +2381,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 770)
+module_eval(<<'.,.,', 'parser.y', 824)
   def _reduce_136(val, _values, result)
         result = val[0]
@@ -2353,5 +2389,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 774)
+module_eval(<<'.,.,', 'parser.y', 828)
   def _reduce_137(val, _values, result)
         result = val[0]
@@ -2361,5 +2397,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 778)
+module_eval(<<'.,.,', 'parser.y', 832)
   def _reduce_138(val, _values, result)
         result = val[0]
@@ -2369,5 +2405,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 782)
+module_eval(<<'.,.,', 'parser.y', 836)
   def _reduce_139(val, _values, result)
         result = val[0]
@@ -2377,5 +2413,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 786)
+module_eval(<<'.,.,', 'parser.y', 840)
   def _reduce_140(val, _values, result)
         result = val[0]
@@ -2397,5 +2433,5 @@
 # reduce 146 omitted
 
-module_eval(<<'.,.,', 'parser.y', 798)
+module_eval(<<'.,.,', 'parser.y', 852)
   def _reduce_147(val, _values, result)
         @@logger.debug("V_TYPE_IDENTIFIER: #{val[0]} at #{@filename}:#{@lineno}")
@@ -2406,5 +2442,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 803)
+module_eval(<<'.,.,', 'parser.y', 857)
   def _reduce_148(val, _values, result)
         @@logger.debug("V_GENERIC_TYPE_IDENTIFIER: #{val[0]} at #{@filename}:#{@lineno}")
@@ -2415,5 +2451,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 809)
+module_eval(<<'.,.,', 'parser.y', 863)
   def _reduce_149(val, _values, result)
         @@logger.debug("V_STRING: #{val[0]} at #{@filename}:#{@lineno}")
@@ -2424,5 +2460,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 815)
+module_eval(<<'.,.,', 'parser.y', 869)
   def _reduce_150(val, _values, result)
         result = [val[0],val[2]]
@@ -2432,5 +2468,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 819)
+module_eval(<<'.,.,', 'parser.y', 873)
   def _reduce_151(val, _values, result)
         result = val[0] << val[2]
@@ -2440,5 +2476,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 823)
+module_eval(<<'.,.,', 'parser.y', 877)
   def _reduce_152(val, _values, result)
         result = val[0]
@@ -2448,5 +2484,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 828)
+module_eval(<<'.,.,', 'parser.y', 882)
   def _reduce_153(val, _values, result)
         begin
@@ -2461,5 +2497,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 837)
+module_eval(<<'.,.,', 'parser.y', 891)
   def _reduce_154(val, _values, result)
         begin
@@ -2474,5 +2510,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 846)
+module_eval(<<'.,.,', 'parser.y', 900)
   def _reduce_155(val, _values, result)
         begin
@@ -2511,5 +2547,5 @@
 # reduce 167 omitted
 
-module_eval(<<'.,.,', 'parser.y', 870)
+module_eval(<<'.,.,', 'parser.y', 924)
   def _reduce_168(val, _values, result)
         begin
@@ -2524,5 +2560,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 879)
+module_eval(<<'.,.,', 'parser.y', 933)
   def _reduce_169(val, _values, result)
         begin
@@ -2537,5 +2573,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 888)
+module_eval(<<'.,.,', 'parser.y', 942)
   def _reduce_170(val, _values, result)
         begin
@@ -2574,5 +2610,5 @@
 # reduce 182 omitted
 
-module_eval(<<'.,.,', 'parser.y', 913)
+module_eval(<<'.,.,', 'parser.y', 967)
   def _reduce_183(val, _values, result)
         result = true
@@ -2582,5 +2618,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 917)
+module_eval(<<'.,.,', 'parser.y', 971)
   def _reduce_184(val, _values, result)
         result = false
@@ -2604,5 +2640,5 @@
 # reduce 191 omitted
 
-module_eval(<<'.,.,', 'parser.y', 932)
+module_eval(<<'.,.,', 'parser.y', 986)
   def _reduce_192(val, _values, result)
         result = val[0]
@@ -2662,5 +2698,5 @@
 # reduce 217 omitted
 
-module_eval(<<'.,.,', 'parser.y', 967)
+module_eval(<<'.,.,', 'parser.y', 1021)
   def _reduce_218(val, _values, result)
         @@logger.debug("V_ISO8601_EXTENDED_DATE_TIME: #{val[0]} at #{@filename}:#{@lineno}")
@@ -2695,5 +2731,5 @@
 # reduce 230 omitted
 
-module_eval(<<'.,.,', 'parser.y', 987)
+module_eval(<<'.,.,', 'parser.y', 1041)
   def _reduce_231(val, _values, result)
         @@logger.debug("V_ISO8601_DURATION: #{val[0]} at #{@filename}:#{@lineno}")
@@ -2728,5 +2764,5 @@
 # reduce 243 omitted
 
-module_eval(<<'.,.,', 'parser.y', 1007)
+module_eval(<<'.,.,', 'parser.y', 1061)
   def _reduce_244(val, _values, result)
         @@logger.debug("#{__FILE__}:#{__LINE__}: V_QUALIFIED_TERM_CODE_REF = #{val[0]} at #{@filename}:#{@lineno}")
@@ -2743,5 +2779,5 @@
 # reduce 247 omitted
 
-module_eval(<<'.,.,', 'parser.y', 1017)
+module_eval(<<'.,.,', 'parser.y', 1071)
   def _reduce_248(val, _values, result)
         @@logger.debug("#{__FILE__}:#{__LINE__}: V_URI = #{val[0]} at #{@filename}:#{@lineno}")
@@ -2768,5 +2804,5 @@
 # reduce 256 omitted
 
-module_eval(<<'.,.,', 'parser.y', 1040)
+module_eval(<<'.,.,', 'parser.y', 1094)
   def _reduce_257(val, _values, result)
         @@logger.debug("#{__FILE__}:#{__LINE__}, boolean_node:  relative_path = #{val[0]}, regexp_body => #{val[3]} at #{@filename}") 
@@ -2833,5 +2869,5 @@
 # reduce 285 omitted
 
-module_eval(<<'.,.,', 'parser.y', 1087)
+module_eval(<<'.,.,', 'parser.y', 1141)
   def _reduce_286(val, _values, result)
         @@logger.debug("#{__FILE__}:#{__LINE__}, relative_path = #{val[0]}") 
@@ -2842,5 +2878,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1092)
+module_eval(<<'.,.,', 'parser.y', 1146)
   def _reduce_287(val, _values, result)
         @@logger.debug("#{__FILE__}:#{__LINE__}, relative_path = #{val[0]}/#{val[2]}") 
@@ -2851,5 +2887,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1098)
+module_eval(<<'.,.,', 'parser.y', 1152)
   def _reduce_288(val, _values, result)
         @@logger.debug("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{val[0]} at #{@filename}") 
@@ -2860,5 +2896,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1103)
+module_eval(<<'.,.,', 'parser.y', 1157)
   def _reduce_289(val, _values, result)
         @@logger.debug("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{val[0]} at #{@filename}") 
@@ -2869,5 +2905,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1115)
+module_eval(<<'.,.,', 'parser.y', 1169)
   def _reduce_290(val, _values, result)
         result = Range.new(1,1)
@@ -2877,5 +2913,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1119)
+module_eval(<<'.,.,', 'parser.y', 1173)
   def _reduce_291(val, _values, result)
         result = val[3]
@@ -2885,5 +2921,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1124)
+module_eval(<<'.,.,', 'parser.y', 1178)
   def _reduce_292(val, _values, result)
         begin
@@ -2898,5 +2934,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1133)
+module_eval(<<'.,.,', 'parser.y', 1187)
   def _reduce_293(val, _values, result)
         begin
@@ -2912,5 +2948,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1144)
+module_eval(<<'.,.,', 'parser.y', 1198)
   def _reduce_294(val, _values, result)
         result = OpenEhr::AM::Archetype::ConstraintModel::CARDINALITY.new
@@ -2920,5 +2956,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1149)
+module_eval(<<'.,.,', 'parser.y', 1203)
   def _reduce_295(val, _values, result)
         result = val[0]
@@ -2942,5 +2978,5 @@
 # reduce 302 omitted
 
-module_eval(<<'.,.,', 'parser.y', 1161)
+module_eval(<<'.,.,', 'parser.y', 1215)
   def _reduce_303(val, _values, result)
         result = val[0]
@@ -2950,5 +2986,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1165)
+module_eval(<<'.,.,', 'parser.y', 1219)
   def _reduce_304(val, _values, result)
         result = val[0]
@@ -2960,5 +2996,5 @@
 # reduce 305 omitted
 
-module_eval(<<'.,.,', 'parser.y', 1172)
+module_eval(<<'.,.,', 'parser.y', 1226)
   def _reduce_306(val, _values, result)
         case val[3]
@@ -2975,5 +3011,5 @@
 # reduce 307 omitted
 
-module_eval(<<'.,.,', 'parser.y', 1183)
+module_eval(<<'.,.,', 'parser.y', 1237)
   def _reduce_308(val, _values, result)
         result = val[0]
@@ -2983,5 +3019,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1187)
+module_eval(<<'.,.,', 'parser.y', 1241)
   def _reduce_309(val, _values, result)
         result = OpenEhr::RM::Support::AssumedTypes::Interval.new(val[0], val[2])
@@ -3077,5 +3113,5 @@
 # reduce 352 omitted
 
-module_eval(<<'.,.,', 'parser.y', 1253)
+module_eval(<<'.,.,', 'parser.y', 1307)
   def _reduce_353(val, _values, result)
         result = OpenEhr::AM::Archetype::ConstraintModel::Primitive::C_BOOLEAN.new(:true_valid => true)
@@ -3085,5 +3121,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1257)
+module_eval(<<'.,.,', 'parser.y', 1311)
   def _reduce_354(val, _values, result)
         result = OpenEhr::AM::Archetype::ConstraintModel::Primitive::C_BOOLEAN.new(:true_valid => false)
@@ -3093,5 +3129,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1261)
+module_eval(<<'.,.,', 'parser.y', 1315)
   def _reduce_355(val, _values, result)
         result = OpenEhr::AM::Archetype::ConstraintModel::Primitive::C_BOOLEAN.new(:true_valid => true,:false_valid => false)
@@ -3101,5 +3137,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1265)
+module_eval(<<'.,.,', 'parser.y', 1319)
   def _reduce_356(val, _values, result)
         result = OpenEhr::AM::Archetype::ConstraintModel::Primitive::C_BOOLEAN.new(:true_valid => false,:false_valid => true)
@@ -3109,5 +3145,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1270)
+module_eval(<<'.,.,', 'parser.y', 1324)
   def _reduce_357(val, _values, result)
         result = val[0]
@@ -3117,5 +3153,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1274)
+module_eval(<<'.,.,', 'parser.y', 1328)
   def _reduce_358(val, _values, result)
         result = val[0]
@@ -3126,5 +3162,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1279)
+module_eval(<<'.,.,', 'parser.y', 1333)
   def _reduce_359(val, _values, result)
         raise 'Not implemented yet'
@@ -3144,5 +3180,5 @@
 # reduce 364 omitted
 
-module_eval(<<'.,.,', 'parser.y', 1291)
+module_eval(<<'.,.,', 'parser.y', 1345)
   def _reduce_365(val, _values, result)
         @in_interval = false
@@ -3153,5 +3189,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1298)
+module_eval(<<'.,.,', 'parser.y', 1352)
   def _reduce_366(val, _values, result)
           result = val[0]
@@ -3161,5 +3197,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1302)
+module_eval(<<'.,.,', 'parser.y', 1356)
   def _reduce_367(val, _values, result)
           result = val[0]
@@ -3169,5 +3205,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1308)
+module_eval(<<'.,.,', 'parser.y', 1362)
   def _reduce_368(val, _values, result)
         @@logger.debug("#{__FILE__}:#{__LINE__}, START_TERM_CODE_CONSTRAINT = #{val[0]} at #{@filename}")
@@ -3186,5 +3222,5 @@
 # reduce 371 omitted
 
-module_eval(<<'.,.,', 'parser.y', 1324)
+module_eval(<<'.,.,', 'parser.y', 1378)
   def _reduce_372(val, _values, result)
           result = val[0]
@@ -3194,5 +3230,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1329)
+module_eval(<<'.,.,', 'parser.y', 1383)
   def _reduce_373(val, _values, result)
           result = val[0]
@@ -3202,5 +3238,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1333)
+module_eval(<<'.,.,', 'parser.y', 1387)
   def _reduce_374(val, _values, result)
         @@logger.debug("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{word} at #{@filename}")
@@ -3211,5 +3247,5 @@
 .,.,
 
-module_eval(<<'.,.,', 'parser.y', 1344)
+module_eval(<<'.,.,', 'parser.y', 1398)
   def _reduce_375(val, _values, result)
         result = OpenEhr::AM::Archetype::ConstraintModel::Primitive::C_DURATION.new #val[0]
