diff --git a/lib/fluentnhibernate/NHibernate.dll b/lib/fluentnhibernate/NHibernate.dll
index f8b0bc264..2bf7d8aa0 100644
Binary files a/lib/fluentnhibernate/NHibernate.dll and b/lib/fluentnhibernate/NHibernate.dll differ
diff --git a/lib/fluentnhibernate/NHibernate.xml b/lib/fluentnhibernate/NHibernate.xml
index a9e6f2e58..a0ea9215f 100644
--- a/lib/fluentnhibernate/NHibernate.xml
+++ b/lib/fluentnhibernate/NHibernate.xml
@@ -11831,6 +11831,14 @@
Comes into play whenever the user specifies the "identity" generator.
+
+
+ Supports splitting batches using GO T-SQL command
+
+
+ Batches http://msdn.microsoft.com/en-us/library/ms175502.aspx
+
+
Defines a contract for implementations that can extract the name of a violated
@@ -24756,13 +24764,6 @@
The clone of the root criteria.
-
-
- Error handling in this case will only kick in if we cannot set values on the TLS
- this is usally the case if we are called from the finalizer, since this is something
- that we do only for logging, we ignore the error.
-
-
Expose the batch functionality in ADO.Net 2.0
@@ -33948,6 +33949,12 @@
Perform the validations.
+
+
+ This acts as a template method. Specific Reader instances
+ override the component methods.
+
+
A implementation based on an explicitly supplied
diff --git a/lib/fluentnhibernate/orchard-buildnotes.txt b/lib/fluentnhibernate/orchard-buildnotes.txt
new file mode 100644
index 000000000..12b8513d1
--- /dev/null
+++ b/lib/fluentnhibernate/orchard-buildnotes.txt
@@ -0,0 +1,7 @@
+
+== nhibernate ==
+
+https://nhibernate.svn.sourceforge.net/svnroot/nhibernate/branches/2.1.x/nhibernate
+at revision #4966
+applied perf-embedded-serializer-and-compiled-schema-reuse.patch
+nant -t:net-3.5 -D:project.config=release
diff --git a/lib/fluentnhibernate/perf-embedded-serializer-and-compiled-schema-reuse.patch b/lib/fluentnhibernate/perf-embedded-serializer-and-compiled-schema-reuse.patch
new file mode 100644
index 000000000..344d05066
--- /dev/null
+++ b/lib/fluentnhibernate/perf-embedded-serializer-and-compiled-schema-reuse.patch
@@ -0,0 +1,13238 @@
+Index: src/NHibernate/Cfg/MappingSchema/MappingDocumentParser.cs
+===================================================================
+--- src/NHibernate/Cfg/MappingSchema/MappingDocumentParser.cs (revision 5264)
++++ src/NHibernate/Cfg/MappingSchema/MappingDocumentParser.cs (working copy)
+@@ -1,6 +1,7 @@
+ using System;
+ using System.IO;
+ using System.Xml.Serialization;
++using Microsoft.Xml.Serialization.GeneratedAssembly;
+
+ namespace NHibernate.Cfg.MappingSchema
+ {
+@@ -11,7 +12,7 @@
+ /// Uses an to deserialize HBM.
+ public class MappingDocumentParser : IMappingDocumentParser
+ {
+- private readonly XmlSerializer serializer = new XmlSerializer(typeof (HbmMapping));
++ private readonly XmlSerializer serializer = new HbmMappingSerializer();
+
+ public HbmMapping Parse(Stream stream)
+ {
+Index: src/NHibernate/Cfg/MappingSchema/Serializers.cs
+===================================================================
+--- src/NHibernate/Cfg/MappingSchema/Serializers.cs (revision 0)
++++ src/NHibernate/Cfg/MappingSchema/Serializers.cs (revision 0)
+@@ -0,0 +1,13086 @@
++
++namespace Microsoft.Xml.Serialization.GeneratedAssembly {
++
++ internal class XmlSerializationWriter1 : System.Xml.Serialization.XmlSerializationWriter {
++
++ public void Write109_class(object o) {
++ WriteStartDocument();
++ if (o == null) {
++ WriteEmptyTag(@"class", @"urn:nhibernate-mapping-2.2");
++ return;
++ }
++ TopLevelElement();
++ Write98_HbmClass(@"class", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmClass)o), false, false);
++ }
++
++ public void Write110_hibernatemapping(object o) {
++ WriteStartDocument();
++ if (o == null) {
++ WriteEmptyTag(@"hibernate-mapping", @"urn:nhibernate-mapping-2.2");
++ return;
++ }
++ TopLevelElement();
++ Write108_HbmMapping(@"hibernate-mapping", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmMapping)o), false, false);
++ }
++
++ void Write108_HbmMapping(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmMapping o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmMapping)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"schema", @"", ((global::System.String)o.@schema));
++ WriteAttribute(@"catalog", @"", ((global::System.String)o.@catalog));
++ if (((global::System.String)o.@defaultcascade) != @"none") {
++ WriteAttribute(@"default-cascade", @"", ((global::System.String)o.@defaultcascade));
++ }
++ if (((global::System.String)o.@defaultaccess) != @"property") {
++ WriteAttribute(@"default-access", @"", ((global::System.String)o.@defaultaccess));
++ }
++ if (((global::System.Boolean)o.@defaultlazy) != true) {
++ WriteAttribute(@"default-lazy", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@defaultlazy)));
++ }
++ if (((global::System.Boolean)o.@autoimport) != true) {
++ WriteAttribute(@"auto-import", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@autoimport)));
++ }
++ WriteAttribute(@"namespace", @"", ((global::System.String)o.@namespace));
++ WriteAttribute(@"assembly", @"", ((global::System.String)o.@assembly));
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmMeta[] a = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])o.@meta;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write4_HbmMeta(@"meta", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmMeta)a[ia]), false, false);
++ }
++ }
++ }
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmTypedef[] a = (global::NHibernate.Cfg.MappingSchema.HbmTypedef[])o.@typedef;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write99_HbmTypedef(@"typedef", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmTypedef)a[ia]), false, false);
++ }
++ }
++ }
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmImport[] a = (global::NHibernate.Cfg.MappingSchema.HbmImport[])o.@import;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write100_HbmImport(@"import", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmImport)a[ia]), false, false);
++ }
++ }
++ }
++ {
++ global::System.Object[] a = (global::System.Object[])o.@Items;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ global::System.Object ai = (global::System.Object)a[ia];
++ if ((object)(ai) != null){
++ if (ai is global::NHibernate.Cfg.MappingSchema.HbmClass) {
++ Write98_HbmClass(@"class", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmClass)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmJoinedSubclass) {
++ Write93_HbmJoinedSubclass(@"joined-subclass", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmJoinedSubclass)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmUnionSubclass) {
++ Write95_HbmUnionSubclass(@"union-subclass", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmUnionSubclass)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmSubclass) {
++ Write94_HbmSubclass(@"subclass", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmSubclass)ai), false, false);
++ }
++ else if ((object)(ai) != null){
++ throw CreateUnknownTypeException(ai);
++ }
++ }
++ }
++ }
++ }
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmResultSet[] a = (global::NHibernate.Cfg.MappingSchema.HbmResultSet[])o.@resultset;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write87_HbmResultSet(@"resultset", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmResultSet)a[ia]), false, false);
++ }
++ }
++ }
++ {
++ global::System.Object[] a = (global::System.Object[])o.@Items1;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ global::System.Object ai = (global::System.Object)a[ia];
++ if ((object)(ai) != null){
++ if (ai is global::NHibernate.Cfg.MappingSchema.HbmQuery) {
++ Write91_HbmQuery(@"query", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmQuery)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmSqlQuery) {
++ Write92_HbmSqlQuery(@"sql-query", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmSqlQuery)ai), false, false);
++ }
++ else if ((object)(ai) != null){
++ throw CreateUnknownTypeException(ai);
++ }
++ }
++ }
++ }
++ }
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmFilterDef[] a = (global::NHibernate.Cfg.MappingSchema.HbmFilterDef[])o.@filterdef;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write102_HbmFilterDef(@"filter-def", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmFilterDef)a[ia]), false, false);
++ }
++ }
++ }
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmDatabaseObject[] a = (global::NHibernate.Cfg.MappingSchema.HbmDatabaseObject[])o.@databaseobject;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write107_HbmDatabaseObject(@"database-object", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmDatabaseObject)a[ia]), false, false);
++ }
++ }
++ }
++ WriteEndElement(o);
++ }
++
++ void Write107_HbmDatabaseObject(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmDatabaseObject o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmDatabaseObject)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ {
++ global::System.Object[] a = (global::System.Object[])o.@Items;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ global::System.Object ai = (global::System.Object)a[ia];
++ if ((object)(ai) != null){
++ if (ai is global::NHibernate.Cfg.MappingSchema.HbmDefinition) {
++ Write104_HbmDefinition(@"definition", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmDefinition)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmDrop) {
++ Write105_HbmDrop(@"drop", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmDrop)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmCreate) {
++ Write103_HbmCreate(@"create", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCreate)ai), false, false);
++ }
++ else if ((object)(ai) != null){
++ throw CreateUnknownTypeException(ai);
++ }
++ }
++ }
++ }
++ }
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmDialectScope[] a = (global::NHibernate.Cfg.MappingSchema.HbmDialectScope[])o.@dialectscope;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write106_HbmDialectScope(@"dialect-scope", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmDialectScope)a[ia]), false, false);
++ }
++ }
++ }
++ WriteEndElement(o);
++ }
++
++ void Write106_HbmDialectScope(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmDialectScope o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmDialectScope)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"name", @"", ((global::System.String)o.@name));
++ {
++ global::System.String[] a = (global::System.String[])o.@Text;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ if ((object)(a[ia]) != null){
++ WriteValue(((global::System.String)a[ia]));
++ }
++ }
++ }
++ }
++ WriteEndElement(o);
++ }
++
++ void Write103_HbmCreate(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmCreate o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmCreate)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ {
++ global::System.String[] a = (global::System.String[])o.@Text;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ if ((object)(a[ia]) != null){
++ WriteValue(((global::System.String)a[ia]));
++ }
++ }
++ }
++ }
++ WriteEndElement(o);
++ }
++
++ void Write105_HbmDrop(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmDrop o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmDrop)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ {
++ global::System.String[] a = (global::System.String[])o.@Text;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ if ((object)(a[ia]) != null){
++ WriteValue(((global::System.String)a[ia]));
++ }
++ }
++ }
++ }
++ WriteEndElement(o);
++ }
++
++ void Write104_HbmDefinition(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmDefinition o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmDefinition)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"class", @"", ((global::System.String)o.@class));
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmParam[] a = (global::NHibernate.Cfg.MappingSchema.HbmParam[])o.@param;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write14_HbmParam(@"param", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmParam)a[ia]), false, false);
++ }
++ }
++ }
++ WriteEndElement(o);
++ }
++
++ void Write14_HbmParam(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmParam o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmParam)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"name", @"", ((global::System.String)o.@name));
++ {
++ global::System.String[] a = (global::System.String[])o.@Text;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ if ((object)(a[ia]) != null){
++ WriteValue(((global::System.String)a[ia]));
++ }
++ }
++ }
++ }
++ WriteEndElement(o);
++ }
++
++ void Write102_HbmFilterDef(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmFilterDef o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmFilterDef)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"name", @"", ((global::System.String)o.@name));
++ WriteAttribute(@"condition", @"", ((global::System.String)o.@condition));
++ if (((global::System.Boolean)o.@usemanytoone) != true) {
++ WriteAttribute(@"use-many-to-one", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@usemanytoone)));
++ }
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmFilterParam[] a = (global::NHibernate.Cfg.MappingSchema.HbmFilterParam[])o.@Items;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write101_HbmFilterParam(@"filter-param", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmFilterParam)a[ia]), false, false);
++ }
++ }
++ }
++ {
++ global::System.String[] a = (global::System.String[])o.@Text;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ if ((object)(a[ia]) != null){
++ WriteValue(((global::System.String)a[ia]));
++ }
++ }
++ }
++ }
++ WriteEndElement(o);
++ }
++
++ void Write101_HbmFilterParam(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmFilterParam o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmFilterParam)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"name", @"", ((global::System.String)o.@name));
++ WriteAttribute(@"type", @"", ((global::System.String)o.@type));
++ WriteEndElement(o);
++ }
++
++ void Write92_HbmSqlQuery(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmSqlQuery o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmSqlQuery)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"name", @"", ((global::System.String)o.@name));
++ WriteAttribute(@"resultset-ref", @"", ((global::System.String)o.@resultsetref));
++ if (o.@flushmodeSpecified) {
++ WriteAttribute(@"flush-mode", @"", Write89_HbmFlushMode(((global::NHibernate.Cfg.MappingSchema.HbmFlushMode)o.@flushmode)));
++ }
++ if (((global::System.Boolean)o.@cacheable) != false) {
++ WriteAttribute(@"cacheable", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@cacheable)));
++ }
++ WriteAttribute(@"cache-region", @"", ((global::System.String)o.@cacheregion));
++ if (o.@fetchsizeSpecified) {
++ WriteAttribute(@"fetch-size", @"", System.Xml.XmlConvert.ToString((global::System.Int32)((global::System.Int32)o.@fetchsize)));
++ }
++ WriteAttribute(@"timeout", @"", ((global::System.String)o.@timeout));
++ if (o.@cachemodeSpecified) {
++ WriteAttribute(@"cache-mode", @"", Write90_HbmCacheMode(((global::NHibernate.Cfg.MappingSchema.HbmCacheMode)o.@cachemode)));
++ }
++ if (o.@readonlySpecified) {
++ WriteAttribute(@"read-only", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@readonly)));
++ }
++ WriteAttribute(@"comment", @"", ((global::System.String)o.@comment));
++ if (((global::System.Boolean)o.@callable) != false) {
++ WriteAttribute(@"callable", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@callable)));
++ }
++ {
++ global::System.Object[] a = (global::System.Object[])o.@Items;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ global::System.Object ai = (global::System.Object)a[ia];
++ if ((object)(ai) != null){
++ if (ai is global::NHibernate.Cfg.MappingSchema.HbmLoadCollection) {
++ Write84_HbmLoadCollection(@"load-collection", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmLoadCollection)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmQueryParam) {
++ Write88_HbmQueryParam(@"query-param", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmQueryParam)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmSynchronize) {
++ Write9_HbmSynchronize(@"synchronize", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmSynchronize)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmReturnJoin) {
++ Write85_HbmReturnJoin(@"return-join", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmReturnJoin)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmReturn) {
++ Write83_HbmReturn(@"return", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmReturn)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmReturnScalar) {
++ Write86_HbmReturnScalar(@"return-scalar", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmReturnScalar)ai), false, false);
++ }
++ else if ((object)(ai) != null){
++ throw CreateUnknownTypeException(ai);
++ }
++ }
++ }
++ }
++ }
++ {
++ global::System.String[] a = (global::System.String[])o.@Text;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ if ((object)(a[ia]) != null){
++ WriteValue(((global::System.String)a[ia]));
++ }
++ }
++ }
++ }
++ if (o.@flushmodeSpecified) {
++ }
++ if (o.@fetchsizeSpecified) {
++ }
++ if (o.@cachemodeSpecified) {
++ }
++ if (o.@readonlySpecified) {
++ }
++ WriteEndElement(o);
++ }
++
++ void Write86_HbmReturnScalar(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmReturnScalar o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmReturnScalar)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"column", @"", ((global::System.String)o.@column));
++ WriteAttribute(@"type", @"", ((global::System.String)o.@type));
++ WriteEndElement(o);
++ }
++
++ void Write83_HbmReturn(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmReturn o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmReturn)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"alias", @"", ((global::System.String)o.@alias));
++ WriteAttribute(@"entity-name", @"", ((global::System.String)o.@entityname));
++ WriteAttribute(@"class", @"", ((global::System.String)o.@class));
++ if (((global::NHibernate.Cfg.MappingSchema.HbmLockMode)o.@lockmode) != global::NHibernate.Cfg.MappingSchema.HbmLockMode.@Read) {
++ WriteAttribute(@"lock-mode", @"", Write82_HbmLockMode(((global::NHibernate.Cfg.MappingSchema.HbmLockMode)o.@lockmode)));
++ }
++ Write79_HbmReturnDiscriminator(@"return-discriminator", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmReturnDiscriminator)o.@returndiscriminator), false, false);
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmReturnProperty[] a = (global::NHibernate.Cfg.MappingSchema.HbmReturnProperty[])o.@returnproperty;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write81_HbmReturnProperty(@"return-property", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmReturnProperty)a[ia]), false, false);
++ }
++ }
++ }
++ WriteEndElement(o);
++ }
++
++ void Write81_HbmReturnProperty(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmReturnProperty o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmReturnProperty)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"name", @"", ((global::System.String)o.@name));
++ WriteAttribute(@"column", @"", ((global::System.String)o.@column));
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmReturnColumn[] a = (global::NHibernate.Cfg.MappingSchema.HbmReturnColumn[])o.@returncolumn;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write80_HbmReturnColumn(@"return-column", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmReturnColumn)a[ia]), false, false);
++ }
++ }
++ }
++ WriteEndElement(o);
++ }
++
++ void Write80_HbmReturnColumn(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmReturnColumn o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmReturnColumn)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"name", @"", ((global::System.String)o.@name));
++ WriteEndElement(o);
++ }
++
++ void Write79_HbmReturnDiscriminator(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmReturnDiscriminator o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmReturnDiscriminator)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"column", @"", ((global::System.String)o.@column));
++ WriteEndElement(o);
++ }
++
++ string Write82_HbmLockMode(global::NHibernate.Cfg.MappingSchema.HbmLockMode v) {
++ string s = null;
++ switch (v) {
++ case global::NHibernate.Cfg.MappingSchema.HbmLockMode.@None: s = @"none"; break;
++ case global::NHibernate.Cfg.MappingSchema.HbmLockMode.@Read: s = @"read"; break;
++ case global::NHibernate.Cfg.MappingSchema.HbmLockMode.@Upgrade: s = @"upgrade"; break;
++ case global::NHibernate.Cfg.MappingSchema.HbmLockMode.@UpgradeNowait: s = @"upgrade-nowait"; break;
++ case global::NHibernate.Cfg.MappingSchema.HbmLockMode.@Write: s = @"write"; break;
++ default: throw CreateInvalidEnumValueException(((System.Int64)v).ToString(System.Globalization.CultureInfo.InvariantCulture), @"NHibernate.Cfg.MappingSchema.HbmLockMode");
++ }
++ return s;
++ }
++
++ void Write85_HbmReturnJoin(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmReturnJoin o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmReturnJoin)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"alias", @"", ((global::System.String)o.@alias));
++ WriteAttribute(@"property", @"", ((global::System.String)o.@property));
++ if (((global::NHibernate.Cfg.MappingSchema.HbmLockMode)o.@lockmode) != global::NHibernate.Cfg.MappingSchema.HbmLockMode.@Read) {
++ WriteAttribute(@"lock-mode", @"", Write82_HbmLockMode(((global::NHibernate.Cfg.MappingSchema.HbmLockMode)o.@lockmode)));
++ }
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmReturnProperty[] a = (global::NHibernate.Cfg.MappingSchema.HbmReturnProperty[])o.@returnproperty;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write81_HbmReturnProperty(@"return-property", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmReturnProperty)a[ia]), false, false);
++ }
++ }
++ }
++ WriteEndElement(o);
++ }
++
++ void Write9_HbmSynchronize(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmSynchronize o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmSynchronize)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"table", @"", ((global::System.String)o.@table));
++ WriteEndElement(o);
++ }
++
++ void Write88_HbmQueryParam(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmQueryParam o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmQueryParam)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"name", @"", ((global::System.String)o.@name));
++ WriteAttribute(@"type", @"", ((global::System.String)o.@type));
++ WriteEndElement(o);
++ }
++
++ void Write84_HbmLoadCollection(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmLoadCollection o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmLoadCollection)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"alias", @"", ((global::System.String)o.@alias));
++ WriteAttribute(@"role", @"", ((global::System.String)o.@role));
++ if (((global::NHibernate.Cfg.MappingSchema.HbmLockMode)o.@lockmode) != global::NHibernate.Cfg.MappingSchema.HbmLockMode.@Read) {
++ WriteAttribute(@"lock-mode", @"", Write82_HbmLockMode(((global::NHibernate.Cfg.MappingSchema.HbmLockMode)o.@lockmode)));
++ }
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmReturnProperty[] a = (global::NHibernate.Cfg.MappingSchema.HbmReturnProperty[])o.@returnproperty;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write81_HbmReturnProperty(@"return-property", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmReturnProperty)a[ia]), false, false);
++ }
++ }
++ }
++ WriteEndElement(o);
++ }
++
++ string Write90_HbmCacheMode(global::NHibernate.Cfg.MappingSchema.HbmCacheMode v) {
++ string s = null;
++ switch (v) {
++ case global::NHibernate.Cfg.MappingSchema.HbmCacheMode.@Get: s = @"get"; break;
++ case global::NHibernate.Cfg.MappingSchema.HbmCacheMode.@Ignore: s = @"ignore"; break;
++ case global::NHibernate.Cfg.MappingSchema.HbmCacheMode.@Normal: s = @"normal"; break;
++ case global::NHibernate.Cfg.MappingSchema.HbmCacheMode.@Put: s = @"put"; break;
++ case global::NHibernate.Cfg.MappingSchema.HbmCacheMode.@Refresh: s = @"refresh"; break;
++ default: throw CreateInvalidEnumValueException(((System.Int64)v).ToString(System.Globalization.CultureInfo.InvariantCulture), @"NHibernate.Cfg.MappingSchema.HbmCacheMode");
++ }
++ return s;
++ }
++
++ string Write89_HbmFlushMode(global::NHibernate.Cfg.MappingSchema.HbmFlushMode v) {
++ string s = null;
++ switch (v) {
++ case global::NHibernate.Cfg.MappingSchema.HbmFlushMode.@Auto: s = @"auto"; break;
++ case global::NHibernate.Cfg.MappingSchema.HbmFlushMode.@Never: s = @"never"; break;
++ case global::NHibernate.Cfg.MappingSchema.HbmFlushMode.@Always: s = @"always"; break;
++ default: throw CreateInvalidEnumValueException(((System.Int64)v).ToString(System.Globalization.CultureInfo.InvariantCulture), @"NHibernate.Cfg.MappingSchema.HbmFlushMode");
++ }
++ return s;
++ }
++
++ void Write91_HbmQuery(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmQuery o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmQuery)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"name", @"", ((global::System.String)o.@name));
++ if (o.@flushmodeSpecified) {
++ WriteAttribute(@"flush-mode", @"", Write89_HbmFlushMode(((global::NHibernate.Cfg.MappingSchema.HbmFlushMode)o.@flushmode)));
++ }
++ if (((global::System.Boolean)o.@cacheable) != false) {
++ WriteAttribute(@"cacheable", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@cacheable)));
++ }
++ WriteAttribute(@"cache-region", @"", ((global::System.String)o.@cacheregion));
++ if (o.@fetchsizeSpecified) {
++ WriteAttribute(@"fetch-size", @"", System.Xml.XmlConvert.ToString((global::System.Int32)((global::System.Int32)o.@fetchsize)));
++ }
++ WriteAttribute(@"timeout", @"", ((global::System.String)o.@timeout));
++ if (o.@cachemodeSpecified) {
++ WriteAttribute(@"cache-mode", @"", Write90_HbmCacheMode(((global::NHibernate.Cfg.MappingSchema.HbmCacheMode)o.@cachemode)));
++ }
++ if (o.@readonlySpecified) {
++ WriteAttribute(@"read-only", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@readonly)));
++ }
++ WriteAttribute(@"comment", @"", ((global::System.String)o.@comment));
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmQueryParam[] a = (global::NHibernate.Cfg.MappingSchema.HbmQueryParam[])o.@Items;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write88_HbmQueryParam(@"query-param", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmQueryParam)a[ia]), false, false);
++ }
++ }
++ }
++ {
++ global::System.String[] a = (global::System.String[])o.@Text;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ if ((object)(a[ia]) != null){
++ WriteValue(((global::System.String)a[ia]));
++ }
++ }
++ }
++ }
++ if (o.@flushmodeSpecified) {
++ }
++ if (o.@fetchsizeSpecified) {
++ }
++ if (o.@cachemodeSpecified) {
++ }
++ if (o.@readonlySpecified) {
++ }
++ WriteEndElement(o);
++ }
++
++ void Write87_HbmResultSet(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmResultSet o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmResultSet)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"name", @"", ((global::System.String)o.@name));
++ {
++ global::System.Object[] a = (global::System.Object[])o.@Items;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ global::System.Object ai = (global::System.Object)a[ia];
++ if ((object)(ai) != null){
++ if (ai is global::NHibernate.Cfg.MappingSchema.HbmReturnJoin) {
++ Write85_HbmReturnJoin(@"return-join", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmReturnJoin)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmReturnScalar) {
++ Write86_HbmReturnScalar(@"return-scalar", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmReturnScalar)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmReturn) {
++ Write83_HbmReturn(@"return", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmReturn)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmLoadCollection) {
++ Write84_HbmLoadCollection(@"load-collection", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmLoadCollection)ai), false, false);
++ }
++ else if ((object)(ai) != null){
++ throw CreateUnknownTypeException(ai);
++ }
++ }
++ }
++ }
++ }
++ WriteEndElement(o);
++ }
++
++ void Write94_HbmSubclass(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmSubclass o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmSubclass)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"entity-name", @"", ((global::System.String)o.@entityname));
++ WriteAttribute(@"name", @"", ((global::System.String)o.@name));
++ WriteAttribute(@"proxy", @"", ((global::System.String)o.@proxy));
++ WriteAttribute(@"discriminator-value", @"", ((global::System.String)o.@discriminatorvalue));
++ if (((global::System.Boolean)o.@dynamicupdate) != false) {
++ WriteAttribute(@"dynamic-update", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@dynamicupdate)));
++ }
++ if (((global::System.Boolean)o.@dynamicinsert) != false) {
++ WriteAttribute(@"dynamic-insert", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@dynamicinsert)));
++ }
++ if (((global::System.Boolean)o.@selectbeforeupdate) != false) {
++ WriteAttribute(@"select-before-update", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@selectbeforeupdate)));
++ }
++ WriteAttribute(@"extends", @"", ((global::System.String)o.@extends));
++ if (o.@lazySpecified) {
++ WriteAttribute(@"lazy", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@lazy)));
++ }
++ if (o.@abstractSpecified) {
++ WriteAttribute(@"abstract", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@abstract)));
++ }
++ WriteAttribute(@"persister", @"", ((global::System.String)o.@persister));
++ WriteAttribute(@"batch-size", @"", ((global::System.String)o.@batchsize));
++ WriteAttribute(@"node", @"", ((global::System.String)o.@node));
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmMeta[] a = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])o.@meta;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write4_HbmMeta(@"meta", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmMeta)a[ia]), false, false);
++ }
++ }
++ }
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmTuplizer[] a = (global::NHibernate.Cfg.MappingSchema.HbmTuplizer[])o.@tuplizer;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write12_HbmTuplizer(@"tuplizer", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmTuplizer)a[ia]), false, false);
++ }
++ }
++ }
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmSynchronize[] a = (global::NHibernate.Cfg.MappingSchema.HbmSynchronize[])o.@synchronize;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write9_HbmSynchronize(@"synchronize", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmSynchronize)a[ia]), false, false);
++ }
++ }
++ }
++ {
++ global::System.Object[] a = (global::System.Object[])o.@Items;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ global::System.Object ai = (global::System.Object)a[ia];
++ if ((object)(ai) != null){
++ if (ai is global::NHibernate.Cfg.MappingSchema.HbmList) {
++ Write67_HbmList(@"list", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmList)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmIdbag) {
++ Write66_HbmIdbag(@"idbag", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmIdbag)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmMap) {
++ Write58_HbmMap(@"map", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmMap)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmComponent) {
++ Write68_HbmComponent(@"component", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmComponent)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmManyToOne) {
++ Write29_HbmManyToOne(@"many-to-one", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmManyToOne)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmBag) {
++ Write50_HbmBag(@"bag", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmBag)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmArray) {
++ Write60_HbmArray(@"array", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmArray)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmDynamicComponent) {
++ Write69_HbmDynamicComponent(@"dynamic-component", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmDynamicComponent)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmPrimitiveArray) {
++ Write64_HbmPrimitiveArray(@"primitive-array", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmPrimitiveArray)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmProperty) {
++ Write34_HbmProperty(@"property", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmProperty)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmAny) {
++ Write36_HbmAny(@"any", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmAny)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmOneToOne) {
++ Write61_HbmOneToOne(@"one-to-one", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmOneToOne)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmSet) {
++ Write49_HbmSet(@"set", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmSet)ai), false, false);
++ }
++ else if ((object)(ai) != null){
++ throw CreateUnknownTypeException(ai);
++ }
++ }
++ }
++ }
++ }
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmJoin[] a = (global::NHibernate.Cfg.MappingSchema.HbmJoin[])o.@join;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write78_HbmJoin(@"join", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmJoin)a[ia]), false, false);
++ }
++ }
++ }
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmSubclass[] a = (global::NHibernate.Cfg.MappingSchema.HbmSubclass[])o.@subclass1;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write94_HbmSubclass(@"subclass", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmSubclass)a[ia]), false, false);
++ }
++ }
++ }
++ Write44_HbmLoader(@"loader", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmLoader)o.@loader), false, false);
++ Write46_HbmCustomSQL(@"sql-insert", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCustomSQL)o.@sqlinsert), false, false);
++ Write46_HbmCustomSQL(@"sql-update", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCustomSQL)o.@sqlupdate), false, false);
++ Write46_HbmCustomSQL(@"sql-delete", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCustomSQL)o.@sqldelete), false, false);
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmResultSet[] a = (global::NHibernate.Cfg.MappingSchema.HbmResultSet[])o.@resultset;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write87_HbmResultSet(@"resultset", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmResultSet)a[ia]), false, false);
++ }
++ }
++ }
++ {
++ global::System.Object[] a = (global::System.Object[])o.@Items1;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ global::System.Object ai = (global::System.Object)a[ia];
++ if ((object)(ai) != null){
++ if (ai is global::NHibernate.Cfg.MappingSchema.HbmSqlQuery) {
++ Write92_HbmSqlQuery(@"sql-query", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmSqlQuery)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmQuery) {
++ Write91_HbmQuery(@"query", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmQuery)ai), false, false);
++ }
++ else if ((object)(ai) != null){
++ throw CreateUnknownTypeException(ai);
++ }
++ }
++ }
++ }
++ }
++ if (o.@lazySpecified) {
++ }
++ if (o.@abstractSpecified) {
++ }
++ WriteEndElement(o);
++ }
++
++ void Write46_HbmCustomSQL(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmCustomSQL o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmCustomSQL)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(@"HbmCustomSQL", @"urn:nhibernate-mapping-2.2");
++ if (o.@callableSpecified) {
++ WriteAttribute(@"callable", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@callable)));
++ }
++ if (o.@checkSpecified) {
++ WriteAttribute(@"check", @"", Write45_HbmCustomSQLCheck(((global::NHibernate.Cfg.MappingSchema.HbmCustomSQLCheck)o.@check)));
++ }
++ if (o.@callableSpecified) {
++ }
++ if (o.@checkSpecified) {
++ }
++ {
++ global::System.String[] a = (global::System.String[])o.@Text;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ if ((object)(a[ia]) != null){
++ WriteValue(((global::System.String)a[ia]));
++ }
++ }
++ }
++ }
++ WriteEndElement(o);
++ }
++
++ string Write45_HbmCustomSQLCheck(global::NHibernate.Cfg.MappingSchema.HbmCustomSQLCheck v) {
++ string s = null;
++ switch (v) {
++ case global::NHibernate.Cfg.MappingSchema.HbmCustomSQLCheck.@None: s = @"none"; break;
++ case global::NHibernate.Cfg.MappingSchema.HbmCustomSQLCheck.@Rowcount: s = @"rowcount"; break;
++ case global::NHibernate.Cfg.MappingSchema.HbmCustomSQLCheck.@Param: s = @"param"; break;
++ default: throw CreateInvalidEnumValueException(((System.Int64)v).ToString(System.Globalization.CultureInfo.InvariantCulture), @"NHibernate.Cfg.MappingSchema.HbmCustomSQLCheck");
++ }
++ return s;
++ }
++
++ void Write44_HbmLoader(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmLoader o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmLoader)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"query-ref", @"", ((global::System.String)o.@queryref));
++ WriteEndElement(o);
++ }
++
++ void Write78_HbmJoin(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmJoin o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmJoin)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"table", @"", ((global::System.String)o.@table));
++ WriteAttribute(@"schema", @"", ((global::System.String)o.@schema));
++ WriteAttribute(@"catalog", @"", ((global::System.String)o.@catalog));
++ WriteAttribute(@"subselect", @"", ((global::System.String)o.@subselect1));
++ if (((global::NHibernate.Cfg.MappingSchema.HbmJoinFetch)o.@fetch) != global::NHibernate.Cfg.MappingSchema.HbmJoinFetch.@Join) {
++ WriteAttribute(@"fetch", @"", Write77_HbmJoinFetch(((global::NHibernate.Cfg.MappingSchema.HbmJoinFetch)o.@fetch)));
++ }
++ if (((global::System.Boolean)o.@inverse) != false) {
++ WriteAttribute(@"inverse", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@inverse)));
++ }
++ if (((global::System.Boolean)o.@optional) != false) {
++ WriteAttribute(@"optional", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@optional)));
++ }
++ Write5_HbmSubselect(@"subselect", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmSubselect)o.@subselect), false, false);
++ Write10_HbmComment(@"comment", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmComment)o.@comment), false, false);
++ Write31_HbmKey(@"key", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmKey)o.@key), false, false);
++ {
++ global::System.Object[] a = (global::System.Object[])o.@Items;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ global::System.Object ai = (global::System.Object)a[ia];
++ if ((object)(ai) != null){
++ if (ai is global::NHibernate.Cfg.MappingSchema.HbmManyToOne) {
++ Write29_HbmManyToOne(@"many-to-one", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmManyToOne)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmPrimitiveArray) {
++ Write64_HbmPrimitiveArray(@"primitive-array", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmPrimitiveArray)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmIdbag) {
++ Write66_HbmIdbag(@"idbag", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmIdbag)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmProperty) {
++ Write34_HbmProperty(@"property", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmProperty)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmMap) {
++ Write58_HbmMap(@"map", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmMap)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmSet) {
++ Write49_HbmSet(@"set", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmSet)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmList) {
++ Write67_HbmList(@"list", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmList)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmArray) {
++ Write60_HbmArray(@"array", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmArray)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmComponent) {
++ Write68_HbmComponent(@"component", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmComponent)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmDynamicComponent) {
++ Write69_HbmDynamicComponent(@"dynamic-component", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmDynamicComponent)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmBag) {
++ Write50_HbmBag(@"bag", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmBag)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmAny) {
++ Write36_HbmAny(@"any", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmAny)ai), false, false);
++ }
++ else if ((object)(ai) != null){
++ throw CreateUnknownTypeException(ai);
++ }
++ }
++ }
++ }
++ }
++ Write46_HbmCustomSQL(@"sql-insert", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCustomSQL)o.@sqlinsert), false, false);
++ Write46_HbmCustomSQL(@"sql-update", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCustomSQL)o.@sqlupdate), false, false);
++ Write46_HbmCustomSQL(@"sql-delete", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCustomSQL)o.@sqldelete), false, false);
++ WriteEndElement(o);
++ }
++
++ void Write36_HbmAny(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmAny o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmAny)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"column", @"", ((global::System.String)o.@column1));
++ WriteAttribute(@"id-type", @"", ((global::System.String)o.@idtype));
++ WriteAttribute(@"meta-type", @"", ((global::System.String)o.@metatype));
++ WriteAttribute(@"name", @"", ((global::System.String)o.@name));
++ WriteAttribute(@"access", @"", ((global::System.String)o.@access));
++ if (((global::System.Boolean)o.@insert) != true) {
++ WriteAttribute(@"insert", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@insert)));
++ }
++ if (((global::System.Boolean)o.@update) != true) {
++ WriteAttribute(@"update", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@update)));
++ }
++ WriteAttribute(@"cascade", @"", ((global::System.String)o.@cascade));
++ WriteAttribute(@"index", @"", ((global::System.String)o.@index));
++ if (((global::System.Boolean)o.@optimisticlock) != true) {
++ WriteAttribute(@"optimistic-lock", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@optimisticlock)));
++ }
++ if (((global::System.Boolean)o.@lazy) != false) {
++ WriteAttribute(@"lazy", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@lazy)));
++ }
++ WriteAttribute(@"node", @"", ((global::System.String)o.@node));
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmMeta[] a = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])o.@meta;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write4_HbmMeta(@"meta", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmMeta)a[ia]), false, false);
++ }
++ }
++ }
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmMetaValue[] a = (global::NHibernate.Cfg.MappingSchema.HbmMetaValue[])o.@metavalue;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write35_HbmMetaValue(@"meta-value", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmMetaValue)a[ia]), false, false);
++ }
++ }
++ }
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmColumn[] a = (global::NHibernate.Cfg.MappingSchema.HbmColumn[])o.@column;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write13_HbmColumn(@"column", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmColumn)a[ia]), false, false);
++ }
++ }
++ }
++ WriteEndElement(o);
++ }
++
++ void Write13_HbmColumn(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmColumn o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmColumn)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"name", @"", ((global::System.String)o.@name));
++ WriteAttribute(@"length", @"", ((global::System.String)o.@length));
++ WriteAttribute(@"precision", @"", ((global::System.String)o.@precision));
++ WriteAttribute(@"scale", @"", ((global::System.String)o.@scale));
++ if (o.@notnullSpecified) {
++ WriteAttribute(@"not-null", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@notnull)));
++ }
++ if (o.@uniqueSpecified) {
++ WriteAttribute(@"unique", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@unique)));
++ }
++ WriteAttribute(@"unique-key", @"", ((global::System.String)o.@uniquekey));
++ WriteAttribute(@"sql-type", @"", ((global::System.String)o.@sqltype));
++ WriteAttribute(@"index", @"", ((global::System.String)o.@index));
++ WriteAttribute(@"check", @"", ((global::System.String)o.@check));
++ WriteAttribute(@"default", @"", ((global::System.String)o.@default));
++ Write10_HbmComment(@"comment", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmComment)o.@comment), false, false);
++ if (o.@notnullSpecified) {
++ }
++ if (o.@uniqueSpecified) {
++ }
++ WriteEndElement(o);
++ }
++
++ void Write10_HbmComment(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmComment o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmComment)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ {
++ global::System.String[] a = (global::System.String[])o.@Text;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ if ((object)(a[ia]) != null){
++ WriteValue(((global::System.String)a[ia]));
++ }
++ }
++ }
++ }
++ WriteEndElement(o);
++ }
++
++ void Write35_HbmMetaValue(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmMetaValue o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmMetaValue)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"value", @"", ((global::System.String)o.@value));
++ WriteAttribute(@"class", @"", ((global::System.String)o.@class));
++ WriteEndElement(o);
++ }
++
++ void Write4_HbmMeta(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmMeta o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"attribute", @"", ((global::System.String)o.@attribute));
++ if (((global::System.Boolean)o.@inherit) != true) {
++ WriteAttribute(@"inherit", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@inherit)));
++ }
++ {
++ global::System.String[] a = (global::System.String[])o.@Text;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ if ((object)(a[ia]) != null){
++ WriteValue(((global::System.String)a[ia]));
++ }
++ }
++ }
++ }
++ WriteEndElement(o);
++ }
++
++ void Write50_HbmBag(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmBag o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmBag)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"name", @"", ((global::System.String)o.@name));
++ WriteAttribute(@"access", @"", ((global::System.String)o.@access));
++ WriteAttribute(@"table", @"", ((global::System.String)o.@table));
++ WriteAttribute(@"schema", @"", ((global::System.String)o.@schema));
++ WriteAttribute(@"catalog", @"", ((global::System.String)o.@catalog));
++ WriteAttribute(@"subselect", @"", ((global::System.String)o.@subselect1));
++ if (o.@lazySpecified) {
++ WriteAttribute(@"lazy", @"", Write47_HbmCollectionLazy(((global::NHibernate.Cfg.MappingSchema.HbmCollectionLazy)o.@lazy)));
++ }
++ if (((global::System.Boolean)o.@inverse) != false) {
++ WriteAttribute(@"inverse", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@inverse)));
++ }
++ if (((global::System.Boolean)o.@mutable) != true) {
++ WriteAttribute(@"mutable", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@mutable)));
++ }
++ WriteAttribute(@"cascade", @"", ((global::System.String)o.@cascade));
++ WriteAttribute(@"order-by", @"", ((global::System.String)o.@orderby));
++ WriteAttribute(@"where", @"", ((global::System.String)o.@where));
++ if (o.@batchsizeSpecified) {
++ WriteAttribute(@"batch-size", @"", System.Xml.XmlConvert.ToString((global::System.Int32)((global::System.Int32)o.@batchsize)));
++ }
++ if (o.@outerjoinSpecified) {
++ WriteAttribute(@"outer-join", @"", Write26_HbmOuterJoinStrategy(((global::NHibernate.Cfg.MappingSchema.HbmOuterJoinStrategy)o.@outerjoin)));
++ }
++ if (o.@fetchSpecified) {
++ WriteAttribute(@"fetch", @"", Write48_HbmCollectionFetchMode(((global::NHibernate.Cfg.MappingSchema.HbmCollectionFetchMode)o.@fetch)));
++ }
++ WriteAttribute(@"persister", @"", ((global::System.String)o.@persister));
++ WriteAttribute(@"collection-type", @"", ((global::System.String)o.@collectiontype));
++ WriteAttribute(@"check", @"", ((global::System.String)o.@check));
++ if (((global::System.Boolean)o.@optimisticlock) != true) {
++ WriteAttribute(@"optimistic-lock", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@optimisticlock)));
++ }
++ WriteAttribute(@"node", @"", ((global::System.String)o.@node));
++ if (((global::System.Boolean)o.@embedxml) != true) {
++ WriteAttribute(@"embed-xml", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@embedxml)));
++ }
++ if (o.@genericSpecified) {
++ WriteAttribute(@"generic", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@generic)));
++ }
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmMeta[] a = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])o.@meta;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write4_HbmMeta(@"meta", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmMeta)a[ia]), false, false);
++ }
++ }
++ }
++ Write5_HbmSubselect(@"subselect", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmSubselect)o.@subselect), false, false);
++ Write8_HbmCache(@"cache", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCache)o.@cache), false, false);
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmSynchronize[] a = (global::NHibernate.Cfg.MappingSchema.HbmSynchronize[])o.@synchronize;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write9_HbmSynchronize(@"synchronize", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmSynchronize)a[ia]), false, false);
++ }
++ }
++ }
++ Write10_HbmComment(@"comment", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmComment)o.@comment), false, false);
++ Write31_HbmKey(@"key", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmKey)o.@key), false, false);
++ if ((object)(o.@Item) != null){
++ if (o.@Item is global::NHibernate.Cfg.MappingSchema.HbmManyToMany) {
++ Write42_HbmManyToMany(@"many-to-many", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmManyToMany)o.@Item), false, false);
++ }
++ else if (o.@Item is global::NHibernate.Cfg.MappingSchema.HbmOneToMany) {
++ Write43_HbmOneToMany(@"one-to-many", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmOneToMany)o.@Item), false, false);
++ }
++ else if (o.@Item is global::NHibernate.Cfg.MappingSchema.HbmCompositeElement) {
++ Write38_HbmCompositeElement(@"composite-element", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCompositeElement)o.@Item), false, false);
++ }
++ else if (o.@Item is global::NHibernate.Cfg.MappingSchema.HbmManyToAny) {
++ Write40_HbmManyToAny(@"many-to-any", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmManyToAny)o.@Item), false, false);
++ }
++ else if (o.@Item is global::NHibernate.Cfg.MappingSchema.HbmElement) {
++ Write39_HbmElement(@"element", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmElement)o.@Item), false, false);
++ }
++ else if ((object)(o.@Item) != null){
++ throw CreateUnknownTypeException(o.@Item);
++ }
++ }
++ Write44_HbmLoader(@"loader", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmLoader)o.@loader), false, false);
++ Write46_HbmCustomSQL(@"sql-insert", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCustomSQL)o.@sqlinsert), false, false);
++ Write46_HbmCustomSQL(@"sql-update", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCustomSQL)o.@sqlupdate), false, false);
++ Write46_HbmCustomSQL(@"sql-delete", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCustomSQL)o.@sqldelete), false, false);
++ Write46_HbmCustomSQL(@"sql-delete-all", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCustomSQL)o.@sqldeleteall), false, false);
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmFilter[] a = (global::NHibernate.Cfg.MappingSchema.HbmFilter[])o.@filter;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write41_HbmFilter(@"filter", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmFilter)a[ia]), false, false);
++ }
++ }
++ }
++ if (o.@lazySpecified) {
++ }
++ if (o.@batchsizeSpecified) {
++ }
++ if (o.@outerjoinSpecified) {
++ }
++ if (o.@fetchSpecified) {
++ }
++ if (o.@genericSpecified) {
++ }
++ WriteEndElement(o);
++ }
++
++ void Write41_HbmFilter(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmFilter o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmFilter)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"name", @"", ((global::System.String)o.@name));
++ WriteAttribute(@"condition", @"", ((global::System.String)o.@condition));
++ {
++ global::System.String[] a = (global::System.String[])o.@Text;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ if ((object)(a[ia]) != null){
++ WriteValue(((global::System.String)a[ia]));
++ }
++ }
++ }
++ }
++ WriteEndElement(o);
++ }
++
++ void Write39_HbmElement(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmElement o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmElement)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"column", @"", ((global::System.String)o.@column));
++ WriteAttribute(@"node", @"", ((global::System.String)o.@node));
++ WriteAttribute(@"formula", @"", ((global::System.String)o.@formula));
++ WriteAttribute(@"type", @"", ((global::System.String)o.@type1));
++ WriteAttribute(@"length", @"", ((global::System.String)o.@length));
++ WriteAttribute(@"precision", @"", ((global::System.String)o.@precision));
++ WriteAttribute(@"scale", @"", ((global::System.String)o.@scale));
++ if (((global::System.Boolean)o.@notnull) != false) {
++ WriteAttribute(@"not-null", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@notnull)));
++ }
++ if (((global::System.Boolean)o.@unique) != false) {
++ WriteAttribute(@"unique", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@unique)));
++ }
++ {
++ global::System.Object[] a = (global::System.Object[])o.@Items;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ global::System.Object ai = (global::System.Object)a[ia];
++ if ((object)(ai) != null){
++ if (ai is global::NHibernate.Cfg.MappingSchema.HbmColumn) {
++ Write13_HbmColumn(@"column", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmColumn)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmFormula) {
++ Write24_HbmFormula(@"formula", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmFormula)ai), false, false);
++ }
++ else if ((object)(ai) != null){
++ throw CreateUnknownTypeException(ai);
++ }
++ }
++ }
++ }
++ }
++ Write15_HbmType(@"type", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmType)o.@type), false, false);
++ WriteEndElement(o);
++ }
++
++ void Write15_HbmType(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmType o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmType)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"name", @"", ((global::System.String)o.@name));
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmParam[] a = (global::NHibernate.Cfg.MappingSchema.HbmParam[])o.@param;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write14_HbmParam(@"param", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmParam)a[ia]), false, false);
++ }
++ }
++ }
++ WriteEndElement(o);
++ }
++
++ void Write24_HbmFormula(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmFormula o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmFormula)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ {
++ global::System.String[] a = (global::System.String[])o.@Text;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ if ((object)(a[ia]) != null){
++ WriteValue(((global::System.String)a[ia]));
++ }
++ }
++ }
++ }
++ WriteEndElement(o);
++ }
++
++ void Write40_HbmManyToAny(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmManyToAny o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmManyToAny)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"column", @"", ((global::System.String)o.@column1));
++ WriteAttribute(@"id-type", @"", ((global::System.String)o.@idtype));
++ WriteAttribute(@"meta-type", @"", ((global::System.String)o.@metatype));
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmMetaValue[] a = (global::NHibernate.Cfg.MappingSchema.HbmMetaValue[])o.@metavalue;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write35_HbmMetaValue(@"meta-value", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmMetaValue)a[ia]), false, false);
++ }
++ }
++ }
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmColumn[] a = (global::NHibernate.Cfg.MappingSchema.HbmColumn[])o.@column;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write13_HbmColumn(@"column", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmColumn)a[ia]), false, false);
++ }
++ }
++ }
++ WriteEndElement(o);
++ }
++
++ void Write38_HbmCompositeElement(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmCompositeElement o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmCompositeElement)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"class", @"", ((global::System.String)o.@class));
++ WriteAttribute(@"node", @"", ((global::System.String)o.@node));
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmMeta[] a = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])o.@meta;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write4_HbmMeta(@"meta", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmMeta)a[ia]), false, false);
++ }
++ }
++ }
++ Write32_HbmParent(@"parent", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmParent)o.@parent), false, false);
++ {
++ global::System.Object[] a = (global::System.Object[])o.@Items;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ global::System.Object ai = (global::System.Object)a[ia];
++ if ((object)(ai) != null){
++ if (ai is global::NHibernate.Cfg.MappingSchema.HbmManyToOne) {
++ Write29_HbmManyToOne(@"many-to-one", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmManyToOne)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmNestedCompositeElement) {
++ Write37_HbmNestedCompositeElement(@"nested-composite-element", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmNestedCompositeElement)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmProperty) {
++ Write34_HbmProperty(@"property", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmProperty)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmAny) {
++ Write36_HbmAny(@"any", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmAny)ai), false, false);
++ }
++ else if ((object)(ai) != null){
++ throw CreateUnknownTypeException(ai);
++ }
++ }
++ }
++ }
++ }
++ WriteEndElement(o);
++ }
++
++ void Write34_HbmProperty(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmProperty o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmProperty)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"name", @"", ((global::System.String)o.@name));
++ WriteAttribute(@"node", @"", ((global::System.String)o.@node));
++ WriteAttribute(@"access", @"", ((global::System.String)o.@access));
++ WriteAttribute(@"type", @"", ((global::System.String)o.@type1));
++ WriteAttribute(@"column", @"", ((global::System.String)o.@column));
++ WriteAttribute(@"length", @"", ((global::System.String)o.@length));
++ WriteAttribute(@"precision", @"", ((global::System.String)o.@precision));
++ WriteAttribute(@"scale", @"", ((global::System.String)o.@scale));
++ if (o.@notnullSpecified) {
++ WriteAttribute(@"not-null", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@notnull)));
++ }
++ if (((global::System.Boolean)o.@unique) != false) {
++ WriteAttribute(@"unique", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@unique)));
++ }
++ WriteAttribute(@"unique-key", @"", ((global::System.String)o.@uniquekey));
++ WriteAttribute(@"index", @"", ((global::System.String)o.@index));
++ if (o.@updateSpecified) {
++ WriteAttribute(@"update", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@update)));
++ }
++ if (o.@insertSpecified) {
++ WriteAttribute(@"insert", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@insert)));
++ }
++ if (((global::System.Boolean)o.@optimisticlock) != true) {
++ WriteAttribute(@"optimistic-lock", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@optimisticlock)));
++ }
++ WriteAttribute(@"formula", @"", ((global::System.String)o.@formula));
++ if (((global::System.Boolean)o.@lazy) != false) {
++ WriteAttribute(@"lazy", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@lazy)));
++ }
++ if (((global::NHibernate.Cfg.MappingSchema.HbmPropertyGeneration)o.@generated) != global::NHibernate.Cfg.MappingSchema.HbmPropertyGeneration.@Never) {
++ WriteAttribute(@"generated", @"", Write33_HbmPropertyGeneration(((global::NHibernate.Cfg.MappingSchema.HbmPropertyGeneration)o.@generated)));
++ }
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmMeta[] a = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])o.@meta;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write4_HbmMeta(@"meta", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmMeta)a[ia]), false, false);
++ }
++ }
++ }
++ {
++ global::System.Object[] a = (global::System.Object[])o.@Items;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ global::System.Object ai = (global::System.Object)a[ia];
++ if ((object)(ai) != null){
++ if (ai is global::NHibernate.Cfg.MappingSchema.HbmColumn) {
++ Write13_HbmColumn(@"column", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmColumn)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmFormula) {
++ Write24_HbmFormula(@"formula", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmFormula)ai), false, false);
++ }
++ else if ((object)(ai) != null){
++ throw CreateUnknownTypeException(ai);
++ }
++ }
++ }
++ }
++ }
++ Write15_HbmType(@"type", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmType)o.@type), false, false);
++ if (o.@notnullSpecified) {
++ }
++ if (o.@updateSpecified) {
++ }
++ if (o.@insertSpecified) {
++ }
++ WriteEndElement(o);
++ }
++
++ string Write33_HbmPropertyGeneration(global::NHibernate.Cfg.MappingSchema.HbmPropertyGeneration v) {
++ string s = null;
++ switch (v) {
++ case global::NHibernate.Cfg.MappingSchema.HbmPropertyGeneration.@Never: s = @"never"; break;
++ case global::NHibernate.Cfg.MappingSchema.HbmPropertyGeneration.@Insert: s = @"insert"; break;
++ case global::NHibernate.Cfg.MappingSchema.HbmPropertyGeneration.@Always: s = @"always"; break;
++ default: throw CreateInvalidEnumValueException(((System.Int64)v).ToString(System.Globalization.CultureInfo.InvariantCulture), @"NHibernate.Cfg.MappingSchema.HbmPropertyGeneration");
++ }
++ return s;
++ }
++
++ void Write37_HbmNestedCompositeElement(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmNestedCompositeElement o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmNestedCompositeElement)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"class", @"", ((global::System.String)o.@class));
++ WriteAttribute(@"name", @"", ((global::System.String)o.@name));
++ WriteAttribute(@"access", @"", ((global::System.String)o.@access));
++ WriteAttribute(@"node", @"", ((global::System.String)o.@node));
++ Write32_HbmParent(@"parent", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmParent)o.@parent), false, false);
++ {
++ global::System.Object[] a = (global::System.Object[])o.@Items;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ global::System.Object ai = (global::System.Object)a[ia];
++ if ((object)(ai) != null){
++ if (ai is global::NHibernate.Cfg.MappingSchema.HbmManyToOne) {
++ Write29_HbmManyToOne(@"many-to-one", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmManyToOne)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmNestedCompositeElement) {
++ Write37_HbmNestedCompositeElement(@"nested-composite-element", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmNestedCompositeElement)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmProperty) {
++ Write34_HbmProperty(@"property", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmProperty)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmAny) {
++ Write36_HbmAny(@"any", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmAny)ai), false, false);
++ }
++ else if ((object)(ai) != null){
++ throw CreateUnknownTypeException(ai);
++ }
++ }
++ }
++ }
++ }
++ WriteEndElement(o);
++ }
++
++ void Write29_HbmManyToOne(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmManyToOne o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmManyToOne)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"name", @"", ((global::System.String)o.@name));
++ WriteAttribute(@"access", @"", ((global::System.String)o.@access));
++ WriteAttribute(@"class", @"", ((global::System.String)o.@class));
++ WriteAttribute(@"entity-name", @"", ((global::System.String)o.@entityname));
++ WriteAttribute(@"column", @"", ((global::System.String)o.@column));
++ if (o.@notnullSpecified) {
++ WriteAttribute(@"not-null", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@notnull)));
++ }
++ if (((global::System.Boolean)o.@unique) != false) {
++ WriteAttribute(@"unique", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@unique)));
++ }
++ WriteAttribute(@"unique-key", @"", ((global::System.String)o.@uniquekey));
++ WriteAttribute(@"index", @"", ((global::System.String)o.@index));
++ WriteAttribute(@"cascade", @"", ((global::System.String)o.@cascade));
++ if (o.@outerjoinSpecified) {
++ WriteAttribute(@"outer-join", @"", Write26_HbmOuterJoinStrategy(((global::NHibernate.Cfg.MappingSchema.HbmOuterJoinStrategy)o.@outerjoin)));
++ }
++ if (o.@fetchSpecified) {
++ WriteAttribute(@"fetch", @"", Write27_HbmFetchMode(((global::NHibernate.Cfg.MappingSchema.HbmFetchMode)o.@fetch)));
++ }
++ if (((global::System.Boolean)o.@update) != true) {
++ WriteAttribute(@"update", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@update)));
++ }
++ if (((global::System.Boolean)o.@insert) != true) {
++ WriteAttribute(@"insert", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@insert)));
++ }
++ if (((global::System.Boolean)o.@optimisticlock) != true) {
++ WriteAttribute(@"optimistic-lock", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@optimisticlock)));
++ }
++ WriteAttribute(@"foreign-key", @"", ((global::System.String)o.@foreignkey));
++ WriteAttribute(@"property-ref", @"", ((global::System.String)o.@propertyref));
++ WriteAttribute(@"formula", @"", ((global::System.String)o.@formula));
++ if (o.@lazySpecified) {
++ WriteAttribute(@"lazy", @"", Write28_HbmLaziness(((global::NHibernate.Cfg.MappingSchema.HbmLaziness)o.@lazy)));
++ }
++ if (((global::NHibernate.Cfg.MappingSchema.HbmNotFoundMode)o.@notfound) != global::NHibernate.Cfg.MappingSchema.HbmNotFoundMode.@Exception) {
++ WriteAttribute(@"not-found", @"", Write19_HbmNotFoundMode(((global::NHibernate.Cfg.MappingSchema.HbmNotFoundMode)o.@notfound)));
++ }
++ WriteAttribute(@"node", @"", ((global::System.String)o.@node));
++ if (((global::System.Boolean)o.@embedxml) != true) {
++ WriteAttribute(@"embed-xml", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@embedxml)));
++ }
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmMeta[] a = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])o.@meta;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write4_HbmMeta(@"meta", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmMeta)a[ia]), false, false);
++ }
++ }
++ }
++ {
++ global::System.Object[] a = (global::System.Object[])o.@Items;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ global::System.Object ai = (global::System.Object)a[ia];
++ if ((object)(ai) != null){
++ if (ai is global::NHibernate.Cfg.MappingSchema.HbmColumn) {
++ Write13_HbmColumn(@"column", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmColumn)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmFormula) {
++ Write24_HbmFormula(@"formula", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmFormula)ai), false, false);
++ }
++ else if ((object)(ai) != null){
++ throw CreateUnknownTypeException(ai);
++ }
++ }
++ }
++ }
++ }
++ if (o.@notnullSpecified) {
++ }
++ if (o.@outerjoinSpecified) {
++ }
++ if (o.@fetchSpecified) {
++ }
++ if (o.@lazySpecified) {
++ }
++ WriteEndElement(o);
++ }
++
++ string Write19_HbmNotFoundMode(global::NHibernate.Cfg.MappingSchema.HbmNotFoundMode v) {
++ string s = null;
++ switch (v) {
++ case global::NHibernate.Cfg.MappingSchema.HbmNotFoundMode.@Ignore: s = @"ignore"; break;
++ case global::NHibernate.Cfg.MappingSchema.HbmNotFoundMode.@Exception: s = @"exception"; break;
++ default: throw CreateInvalidEnumValueException(((System.Int64)v).ToString(System.Globalization.CultureInfo.InvariantCulture), @"NHibernate.Cfg.MappingSchema.HbmNotFoundMode");
++ }
++ return s;
++ }
++
++ string Write28_HbmLaziness(global::NHibernate.Cfg.MappingSchema.HbmLaziness v) {
++ string s = null;
++ switch (v) {
++ case global::NHibernate.Cfg.MappingSchema.HbmLaziness.@False: s = @"false"; break;
++ case global::NHibernate.Cfg.MappingSchema.HbmLaziness.@Proxy: s = @"proxy"; break;
++ case global::NHibernate.Cfg.MappingSchema.HbmLaziness.@NoProxy: s = @"no-proxy"; break;
++ default: throw CreateInvalidEnumValueException(((System.Int64)v).ToString(System.Globalization.CultureInfo.InvariantCulture), @"NHibernate.Cfg.MappingSchema.HbmLaziness");
++ }
++ return s;
++ }
++
++ string Write27_HbmFetchMode(global::NHibernate.Cfg.MappingSchema.HbmFetchMode v) {
++ string s = null;
++ switch (v) {
++ case global::NHibernate.Cfg.MappingSchema.HbmFetchMode.@Select: s = @"select"; break;
++ case global::NHibernate.Cfg.MappingSchema.HbmFetchMode.@Join: s = @"join"; break;
++ default: throw CreateInvalidEnumValueException(((System.Int64)v).ToString(System.Globalization.CultureInfo.InvariantCulture), @"NHibernate.Cfg.MappingSchema.HbmFetchMode");
++ }
++ return s;
++ }
++
++ string Write26_HbmOuterJoinStrategy(global::NHibernate.Cfg.MappingSchema.HbmOuterJoinStrategy v) {
++ string s = null;
++ switch (v) {
++ case global::NHibernate.Cfg.MappingSchema.HbmOuterJoinStrategy.@Auto: s = @"auto"; break;
++ case global::NHibernate.Cfg.MappingSchema.HbmOuterJoinStrategy.@True: s = @"true"; break;
++ case global::NHibernate.Cfg.MappingSchema.HbmOuterJoinStrategy.@False: s = @"false"; break;
++ default: throw CreateInvalidEnumValueException(((System.Int64)v).ToString(System.Globalization.CultureInfo.InvariantCulture), @"NHibernate.Cfg.MappingSchema.HbmOuterJoinStrategy");
++ }
++ return s;
++ }
++
++ void Write32_HbmParent(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmParent o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmParent)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"name", @"", ((global::System.String)o.@name));
++ WriteEndElement(o);
++ }
++
++ void Write43_HbmOneToMany(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmOneToMany o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmOneToMany)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"class", @"", ((global::System.String)o.@class));
++ if (((global::NHibernate.Cfg.MappingSchema.HbmNotFoundMode)o.@notfound) != global::NHibernate.Cfg.MappingSchema.HbmNotFoundMode.@Exception) {
++ WriteAttribute(@"not-found", @"", Write19_HbmNotFoundMode(((global::NHibernate.Cfg.MappingSchema.HbmNotFoundMode)o.@notfound)));
++ }
++ WriteAttribute(@"node", @"", ((global::System.String)o.@node));
++ if (((global::System.Boolean)o.@embedxml) != true) {
++ WriteAttribute(@"embed-xml", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@embedxml)));
++ }
++ WriteAttribute(@"entity-name", @"", ((global::System.String)o.@entityname));
++ WriteEndElement(o);
++ }
++
++ void Write42_HbmManyToMany(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmManyToMany o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmManyToMany)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"class", @"", ((global::System.String)o.@class));
++ WriteAttribute(@"node", @"", ((global::System.String)o.@node));
++ if (((global::System.Boolean)o.@embedxml) != true) {
++ WriteAttribute(@"embed-xml", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@embedxml)));
++ }
++ WriteAttribute(@"entity-name", @"", ((global::System.String)o.@entityname));
++ WriteAttribute(@"column", @"", ((global::System.String)o.@column));
++ WriteAttribute(@"formula", @"", ((global::System.String)o.@formula));
++ if (((global::NHibernate.Cfg.MappingSchema.HbmNotFoundMode)o.@notfound) != global::NHibernate.Cfg.MappingSchema.HbmNotFoundMode.@Exception) {
++ WriteAttribute(@"not-found", @"", Write19_HbmNotFoundMode(((global::NHibernate.Cfg.MappingSchema.HbmNotFoundMode)o.@notfound)));
++ }
++ if (o.@outerjoinSpecified) {
++ WriteAttribute(@"outer-join", @"", Write26_HbmOuterJoinStrategy(((global::NHibernate.Cfg.MappingSchema.HbmOuterJoinStrategy)o.@outerjoin)));
++ }
++ if (o.@fetchSpecified) {
++ WriteAttribute(@"fetch", @"", Write27_HbmFetchMode(((global::NHibernate.Cfg.MappingSchema.HbmFetchMode)o.@fetch)));
++ }
++ if (o.@lazySpecified) {
++ WriteAttribute(@"lazy", @"", Write18_HbmRestrictedLaziness(((global::NHibernate.Cfg.MappingSchema.HbmRestrictedLaziness)o.@lazy)));
++ }
++ WriteAttribute(@"foreign-key", @"", ((global::System.String)o.@foreignkey));
++ if (((global::System.Boolean)o.@unique) != false) {
++ WriteAttribute(@"unique", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@unique)));
++ }
++ WriteAttribute(@"where", @"", ((global::System.String)o.@where));
++ WriteAttribute(@"order-by", @"", ((global::System.String)o.@orderby));
++ WriteAttribute(@"property-ref", @"", ((global::System.String)o.@propertyref));
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmMeta[] a = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])o.@meta;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write4_HbmMeta(@"meta", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmMeta)a[ia]), false, false);
++ }
++ }
++ }
++ {
++ global::System.Object[] a = (global::System.Object[])o.@Items;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ global::System.Object ai = (global::System.Object)a[ia];
++ if ((object)(ai) != null){
++ if (ai is global::NHibernate.Cfg.MappingSchema.HbmColumn) {
++ Write13_HbmColumn(@"column", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmColumn)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmFormula) {
++ Write24_HbmFormula(@"formula", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmFormula)ai), false, false);
++ }
++ else if ((object)(ai) != null){
++ throw CreateUnknownTypeException(ai);
++ }
++ }
++ }
++ }
++ }
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmFilter[] a = (global::NHibernate.Cfg.MappingSchema.HbmFilter[])o.@filter;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write41_HbmFilter(@"filter", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmFilter)a[ia]), false, false);
++ }
++ }
++ }
++ if (o.@outerjoinSpecified) {
++ }
++ if (o.@fetchSpecified) {
++ }
++ if (o.@lazySpecified) {
++ }
++ WriteEndElement(o);
++ }
++
++ string Write18_HbmRestrictedLaziness(global::NHibernate.Cfg.MappingSchema.HbmRestrictedLaziness v) {
++ string s = null;
++ switch (v) {
++ case global::NHibernate.Cfg.MappingSchema.HbmRestrictedLaziness.@False: s = @"false"; break;
++ case global::NHibernate.Cfg.MappingSchema.HbmRestrictedLaziness.@Proxy: s = @"proxy"; break;
++ default: throw CreateInvalidEnumValueException(((System.Int64)v).ToString(System.Globalization.CultureInfo.InvariantCulture), @"NHibernate.Cfg.MappingSchema.HbmRestrictedLaziness");
++ }
++ return s;
++ }
++
++ void Write31_HbmKey(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmKey o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmKey)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"column", @"", ((global::System.String)o.@column1));
++ WriteAttribute(@"property-ref", @"", ((global::System.String)o.@propertyref));
++ WriteAttribute(@"foreign-key", @"", ((global::System.String)o.@foreignkey));
++ if (((global::NHibernate.Cfg.MappingSchema.HbmOndelete)o.@ondelete) != global::NHibernate.Cfg.MappingSchema.HbmOndelete.@Noaction) {
++ WriteAttribute(@"on-delete", @"", Write30_HbmOndelete(((global::NHibernate.Cfg.MappingSchema.HbmOndelete)o.@ondelete)));
++ }
++ if (o.@notnullSpecified) {
++ WriteAttribute(@"not-null", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@notnull)));
++ }
++ if (o.@updateSpecified) {
++ WriteAttribute(@"update", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@update)));
++ }
++ if (o.@uniqueSpecified) {
++ WriteAttribute(@"unique", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@unique)));
++ }
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmColumn[] a = (global::NHibernate.Cfg.MappingSchema.HbmColumn[])o.@column;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write13_HbmColumn(@"column", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmColumn)a[ia]), false, false);
++ }
++ }
++ }
++ if (o.@notnullSpecified) {
++ }
++ if (o.@updateSpecified) {
++ }
++ if (o.@uniqueSpecified) {
++ }
++ WriteEndElement(o);
++ }
++
++ string Write30_HbmOndelete(global::NHibernate.Cfg.MappingSchema.HbmOndelete v) {
++ string s = null;
++ switch (v) {
++ case global::NHibernate.Cfg.MappingSchema.HbmOndelete.@Cascade: s = @"cascade"; break;
++ case global::NHibernate.Cfg.MappingSchema.HbmOndelete.@Noaction: s = @"noaction"; break;
++ default: throw CreateInvalidEnumValueException(((System.Int64)v).ToString(System.Globalization.CultureInfo.InvariantCulture), @"NHibernate.Cfg.MappingSchema.HbmOndelete");
++ }
++ return s;
++ }
++
++ void Write8_HbmCache(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmCache o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmCache)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"usage", @"", Write6_HbmCacheUsage(((global::NHibernate.Cfg.MappingSchema.HbmCacheUsage)o.@usage)));
++ WriteAttribute(@"region", @"", ((global::System.String)o.@region));
++ if (((global::NHibernate.Cfg.MappingSchema.HbmCacheInclude)o.@include) != global::NHibernate.Cfg.MappingSchema.HbmCacheInclude.@All) {
++ WriteAttribute(@"include", @"", Write7_HbmCacheInclude(((global::NHibernate.Cfg.MappingSchema.HbmCacheInclude)o.@include)));
++ }
++ WriteEndElement(o);
++ }
++
++ string Write7_HbmCacheInclude(global::NHibernate.Cfg.MappingSchema.HbmCacheInclude v) {
++ string s = null;
++ switch (v) {
++ case global::NHibernate.Cfg.MappingSchema.HbmCacheInclude.@All: s = @"all"; break;
++ case global::NHibernate.Cfg.MappingSchema.HbmCacheInclude.@NonLazy: s = @"non-lazy"; break;
++ default: throw CreateInvalidEnumValueException(((System.Int64)v).ToString(System.Globalization.CultureInfo.InvariantCulture), @"NHibernate.Cfg.MappingSchema.HbmCacheInclude");
++ }
++ return s;
++ }
++
++ string Write6_HbmCacheUsage(global::NHibernate.Cfg.MappingSchema.HbmCacheUsage v) {
++ string s = null;
++ switch (v) {
++ case global::NHibernate.Cfg.MappingSchema.HbmCacheUsage.@ReadOnly: s = @"read-only"; break;
++ case global::NHibernate.Cfg.MappingSchema.HbmCacheUsage.@ReadWrite: s = @"read-write"; break;
++ case global::NHibernate.Cfg.MappingSchema.HbmCacheUsage.@NonstrictReadWrite: s = @"nonstrict-read-write"; break;
++ case global::NHibernate.Cfg.MappingSchema.HbmCacheUsage.@Transactional: s = @"transactional"; break;
++ default: throw CreateInvalidEnumValueException(((System.Int64)v).ToString(System.Globalization.CultureInfo.InvariantCulture), @"NHibernate.Cfg.MappingSchema.HbmCacheUsage");
++ }
++ return s;
++ }
++
++ void Write5_HbmSubselect(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmSubselect o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmSubselect)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ {
++ global::System.String[] a = (global::System.String[])o.@Text;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ if ((object)(a[ia]) != null){
++ WriteValue(((global::System.String)a[ia]));
++ }
++ }
++ }
++ }
++ WriteEndElement(o);
++ }
++
++ string Write48_HbmCollectionFetchMode(global::NHibernate.Cfg.MappingSchema.HbmCollectionFetchMode v) {
++ string s = null;
++ switch (v) {
++ case global::NHibernate.Cfg.MappingSchema.HbmCollectionFetchMode.@Select: s = @"select"; break;
++ case global::NHibernate.Cfg.MappingSchema.HbmCollectionFetchMode.@Join: s = @"join"; break;
++ case global::NHibernate.Cfg.MappingSchema.HbmCollectionFetchMode.@Subselect: s = @"subselect"; break;
++ default: throw CreateInvalidEnumValueException(((System.Int64)v).ToString(System.Globalization.CultureInfo.InvariantCulture), @"NHibernate.Cfg.MappingSchema.HbmCollectionFetchMode");
++ }
++ return s;
++ }
++
++ string Write47_HbmCollectionLazy(global::NHibernate.Cfg.MappingSchema.HbmCollectionLazy v) {
++ string s = null;
++ switch (v) {
++ case global::NHibernate.Cfg.MappingSchema.HbmCollectionLazy.@True: s = @"true"; break;
++ case global::NHibernate.Cfg.MappingSchema.HbmCollectionLazy.@False: s = @"false"; break;
++ case global::NHibernate.Cfg.MappingSchema.HbmCollectionLazy.@Extra: s = @"extra"; break;
++ default: throw CreateInvalidEnumValueException(((System.Int64)v).ToString(System.Globalization.CultureInfo.InvariantCulture), @"NHibernate.Cfg.MappingSchema.HbmCollectionLazy");
++ }
++ return s;
++ }
++
++ void Write69_HbmDynamicComponent(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmDynamicComponent o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmDynamicComponent)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"name", @"", ((global::System.String)o.@name));
++ WriteAttribute(@"access", @"", ((global::System.String)o.@access));
++ if (((global::System.Boolean)o.@unique) != false) {
++ WriteAttribute(@"unique", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@unique)));
++ }
++ if (((global::System.Boolean)o.@update) != true) {
++ WriteAttribute(@"update", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@update)));
++ }
++ if (((global::System.Boolean)o.@insert) != true) {
++ WriteAttribute(@"insert", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@insert)));
++ }
++ if (((global::System.Boolean)o.@optimisticlock) != true) {
++ WriteAttribute(@"optimistic-lock", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@optimisticlock)));
++ }
++ WriteAttribute(@"node", @"", ((global::System.String)o.@node));
++ {
++ global::System.Object[] a = (global::System.Object[])o.@Items;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ global::System.Object ai = (global::System.Object)a[ia];
++ if ((object)(ai) != null){
++ if (ai is global::NHibernate.Cfg.MappingSchema.HbmList) {
++ Write67_HbmList(@"list", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmList)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmPrimitiveArray) {
++ Write64_HbmPrimitiveArray(@"primitive-array", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmPrimitiveArray)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmAny) {
++ Write36_HbmAny(@"any", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmAny)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmOneToOne) {
++ Write61_HbmOneToOne(@"one-to-one", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmOneToOne)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmMap) {
++ Write58_HbmMap(@"map", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmMap)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmDynamicComponent) {
++ Write69_HbmDynamicComponent(@"dynamic-component", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmDynamicComponent)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmBag) {
++ Write50_HbmBag(@"bag", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmBag)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmSet) {
++ Write49_HbmSet(@"set", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmSet)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmManyToOne) {
++ Write29_HbmManyToOne(@"many-to-one", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmManyToOne)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmArray) {
++ Write60_HbmArray(@"array", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmArray)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmProperty) {
++ Write34_HbmProperty(@"property", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmProperty)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmComponent) {
++ Write68_HbmComponent(@"component", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmComponent)ai), false, false);
++ }
++ else if ((object)(ai) != null){
++ throw CreateUnknownTypeException(ai);
++ }
++ }
++ }
++ }
++ }
++ WriteEndElement(o);
++ }
++
++ void Write68_HbmComponent(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmComponent o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmComponent)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"class", @"", ((global::System.String)o.@class));
++ WriteAttribute(@"name", @"", ((global::System.String)o.@name));
++ WriteAttribute(@"access", @"", ((global::System.String)o.@access));
++ if (((global::System.Boolean)o.@unique) != false) {
++ WriteAttribute(@"unique", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@unique)));
++ }
++ if (((global::System.Boolean)o.@update) != true) {
++ WriteAttribute(@"update", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@update)));
++ }
++ if (((global::System.Boolean)o.@insert) != true) {
++ WriteAttribute(@"insert", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@insert)));
++ }
++ if (((global::System.Boolean)o.@lazy) != false) {
++ WriteAttribute(@"lazy", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@lazy)));
++ }
++ if (((global::System.Boolean)o.@optimisticlock) != true) {
++ WriteAttribute(@"optimistic-lock", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@optimisticlock)));
++ }
++ WriteAttribute(@"node", @"", ((global::System.String)o.@node));
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmMeta[] a = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])o.@meta;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write4_HbmMeta(@"meta", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmMeta)a[ia]), false, false);
++ }
++ }
++ }
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmTuplizer[] a = (global::NHibernate.Cfg.MappingSchema.HbmTuplizer[])o.@tuplizer;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write12_HbmTuplizer(@"tuplizer", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmTuplizer)a[ia]), false, false);
++ }
++ }
++ }
++ Write32_HbmParent(@"parent", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmParent)o.@parent), false, false);
++ {
++ global::System.Object[] a = (global::System.Object[])o.@Items;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ global::System.Object ai = (global::System.Object)a[ia];
++ if ((object)(ai) != null){
++ if (ai is global::NHibernate.Cfg.MappingSchema.HbmIdbag) {
++ Write66_HbmIdbag(@"idbag", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmIdbag)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmComponent) {
++ Write68_HbmComponent(@"component", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmComponent)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmBag) {
++ Write50_HbmBag(@"bag", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmBag)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmDynamicComponent) {
++ Write69_HbmDynamicComponent(@"dynamic-component", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmDynamicComponent)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmAny) {
++ Write36_HbmAny(@"any", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmAny)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmList) {
++ Write67_HbmList(@"list", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmList)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmSet) {
++ Write49_HbmSet(@"set", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmSet)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmArray) {
++ Write60_HbmArray(@"array", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmArray)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmManyToOne) {
++ Write29_HbmManyToOne(@"many-to-one", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmManyToOne)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmMap) {
++ Write58_HbmMap(@"map", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmMap)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmProperty) {
++ Write34_HbmProperty(@"property", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmProperty)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmPrimitiveArray) {
++ Write64_HbmPrimitiveArray(@"primitive-array", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmPrimitiveArray)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmOneToOne) {
++ Write61_HbmOneToOne(@"one-to-one", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmOneToOne)ai), false, false);
++ }
++ else if ((object)(ai) != null){
++ throw CreateUnknownTypeException(ai);
++ }
++ }
++ }
++ }
++ }
++ WriteEndElement(o);
++ }
++
++ void Write61_HbmOneToOne(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmOneToOne o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmOneToOne)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"name", @"", ((global::System.String)o.@name));
++ WriteAttribute(@"formula", @"", ((global::System.String)o.@formula1));
++ WriteAttribute(@"access", @"", ((global::System.String)o.@access));
++ WriteAttribute(@"class", @"", ((global::System.String)o.@class));
++ WriteAttribute(@"entity-name", @"", ((global::System.String)o.@entityname));
++ WriteAttribute(@"cascade", @"", ((global::System.String)o.@cascade));
++ if (o.@outerjoinSpecified) {
++ WriteAttribute(@"outer-join", @"", Write26_HbmOuterJoinStrategy(((global::NHibernate.Cfg.MappingSchema.HbmOuterJoinStrategy)o.@outerjoin)));
++ }
++ if (o.@fetchSpecified) {
++ WriteAttribute(@"fetch", @"", Write27_HbmFetchMode(((global::NHibernate.Cfg.MappingSchema.HbmFetchMode)o.@fetch)));
++ }
++ if (((global::System.Boolean)o.@constrained) != false) {
++ WriteAttribute(@"constrained", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@constrained)));
++ }
++ WriteAttribute(@"foreign-key", @"", ((global::System.String)o.@foreignkey));
++ WriteAttribute(@"property-ref", @"", ((global::System.String)o.@propertyref));
++ if (o.@lazySpecified) {
++ WriteAttribute(@"lazy", @"", Write28_HbmLaziness(((global::NHibernate.Cfg.MappingSchema.HbmLaziness)o.@lazy)));
++ }
++ WriteAttribute(@"node", @"", ((global::System.String)o.@node));
++ if (((global::System.Boolean)o.@embedxml) != true) {
++ WriteAttribute(@"embed-xml", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@embedxml)));
++ }
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmMeta[] a = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])o.@meta;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write4_HbmMeta(@"meta", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmMeta)a[ia]), false, false);
++ }
++ }
++ }
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmFormula[] a = (global::NHibernate.Cfg.MappingSchema.HbmFormula[])o.@formula;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write24_HbmFormula(@"formula", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmFormula)a[ia]), false, false);
++ }
++ }
++ }
++ if (o.@outerjoinSpecified) {
++ }
++ if (o.@fetchSpecified) {
++ }
++ if (o.@lazySpecified) {
++ }
++ WriteEndElement(o);
++ }
++
++ void Write64_HbmPrimitiveArray(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmPrimitiveArray o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmPrimitiveArray)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"name", @"", ((global::System.String)o.@name));
++ WriteAttribute(@"access", @"", ((global::System.String)o.@access));
++ WriteAttribute(@"table", @"", ((global::System.String)o.@table));
++ WriteAttribute(@"schema", @"", ((global::System.String)o.@schema));
++ WriteAttribute(@"catalog", @"", ((global::System.String)o.@catalog));
++ WriteAttribute(@"subselect", @"", ((global::System.String)o.@subselect1));
++ if (((global::System.Boolean)o.@mutable) != true) {
++ WriteAttribute(@"mutable", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@mutable)));
++ }
++ WriteAttribute(@"where", @"", ((global::System.String)o.@where));
++ WriteAttribute(@"batch-size", @"", ((global::System.String)o.@batchsize));
++ if (o.@outerjoinSpecified) {
++ WriteAttribute(@"outer-join", @"", Write62_HbmPrimitivearrayOuterjoin(((global::NHibernate.Cfg.MappingSchema.HbmPrimitivearrayOuterjoin)o.@outerjoin)));
++ }
++ if (o.@fetchSpecified) {
++ WriteAttribute(@"fetch", @"", Write63_HbmPrimitivearrayFetch(((global::NHibernate.Cfg.MappingSchema.HbmPrimitivearrayFetch)o.@fetch)));
++ }
++ WriteAttribute(@"persister", @"", ((global::System.String)o.@persister));
++ WriteAttribute(@"collection-type", @"", ((global::System.String)o.@collectiontype));
++ WriteAttribute(@"check", @"", ((global::System.String)o.@check));
++ if (((global::System.Boolean)o.@optimisticlock) != true) {
++ WriteAttribute(@"optimistic-lock", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@optimisticlock)));
++ }
++ WriteAttribute(@"node", @"", ((global::System.String)o.@node));
++ if (((global::System.Boolean)o.@embedxml) != true) {
++ WriteAttribute(@"embed-xml", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@embedxml)));
++ }
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmMeta[] a = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])o.@meta;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write4_HbmMeta(@"meta", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmMeta)a[ia]), false, false);
++ }
++ }
++ }
++ Write5_HbmSubselect(@"subselect", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmSubselect)o.@subselect), false, false);
++ Write8_HbmCache(@"cache", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCache)o.@cache), false, false);
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmSynchronize[] a = (global::NHibernate.Cfg.MappingSchema.HbmSynchronize[])o.@synchronize;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write9_HbmSynchronize(@"synchronize", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmSynchronize)a[ia]), false, false);
++ }
++ }
++ }
++ Write10_HbmComment(@"comment", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmComment)o.@comment), false, false);
++ Write31_HbmKey(@"key", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmKey)o.@key), false, false);
++ if ((object)(o.@Item) != null){
++ if (o.@Item is global::NHibernate.Cfg.MappingSchema.HbmIndex) {
++ Write55_HbmIndex(@"index", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmIndex)o.@Item), false, false);
++ }
++ else if (o.@Item is global::NHibernate.Cfg.MappingSchema.HbmListIndex) {
++ Write59_HbmListIndex(@"list-index", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmListIndex)o.@Item), false, false);
++ }
++ else if ((object)(o.@Item) != null){
++ throw CreateUnknownTypeException(o.@Item);
++ }
++ }
++ Write39_HbmElement(@"element", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmElement)o.@element), false, false);
++ Write44_HbmLoader(@"loader", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmLoader)o.@loader), false, false);
++ Write46_HbmCustomSQL(@"sql-insert", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCustomSQL)o.@sqlinsert), false, false);
++ Write46_HbmCustomSQL(@"sql-update", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCustomSQL)o.@sqlupdate), false, false);
++ Write46_HbmCustomSQL(@"sql-delete", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCustomSQL)o.@sqldelete), false, false);
++ Write46_HbmCustomSQL(@"sql-delete-all", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCustomSQL)o.@sqldeleteall), false, false);
++ if (o.@outerjoinSpecified) {
++ }
++ if (o.@fetchSpecified) {
++ }
++ WriteEndElement(o);
++ }
++
++ void Write59_HbmListIndex(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmListIndex o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmListIndex)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"column", @"", ((global::System.String)o.@column1));
++ WriteAttribute(@"base", @"", ((global::System.String)o.@base));
++ Write13_HbmColumn(@"column", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmColumn)o.@column), false, false);
++ WriteEndElement(o);
++ }
++
++ void Write55_HbmIndex(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmIndex o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmIndex)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"column", @"", ((global::System.String)o.@column1));
++ WriteAttribute(@"type", @"", ((global::System.String)o.@type));
++ WriteAttribute(@"length", @"", ((global::System.String)o.@length));
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmColumn[] a = (global::NHibernate.Cfg.MappingSchema.HbmColumn[])o.@column;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write13_HbmColumn(@"column", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmColumn)a[ia]), false, false);
++ }
++ }
++ }
++ WriteEndElement(o);
++ }
++
++ string Write63_HbmPrimitivearrayFetch(global::NHibernate.Cfg.MappingSchema.HbmPrimitivearrayFetch v) {
++ string s = null;
++ switch (v) {
++ case global::NHibernate.Cfg.MappingSchema.HbmPrimitivearrayFetch.@Join: s = @"join"; break;
++ case global::NHibernate.Cfg.MappingSchema.HbmPrimitivearrayFetch.@Select: s = @"select"; break;
++ case global::NHibernate.Cfg.MappingSchema.HbmPrimitivearrayFetch.@Subselect: s = @"subselect"; break;
++ default: throw CreateInvalidEnumValueException(((System.Int64)v).ToString(System.Globalization.CultureInfo.InvariantCulture), @"NHibernate.Cfg.MappingSchema.HbmPrimitivearrayFetch");
++ }
++ return s;
++ }
++
++ string Write62_HbmPrimitivearrayOuterjoin(global::NHibernate.Cfg.MappingSchema.HbmPrimitivearrayOuterjoin v) {
++ string s = null;
++ switch (v) {
++ case global::NHibernate.Cfg.MappingSchema.HbmPrimitivearrayOuterjoin.@True: s = @"true"; break;
++ case global::NHibernate.Cfg.MappingSchema.HbmPrimitivearrayOuterjoin.@False: s = @"false"; break;
++ case global::NHibernate.Cfg.MappingSchema.HbmPrimitivearrayOuterjoin.@Auto: s = @"auto"; break;
++ default: throw CreateInvalidEnumValueException(((System.Int64)v).ToString(System.Globalization.CultureInfo.InvariantCulture), @"NHibernate.Cfg.MappingSchema.HbmPrimitivearrayOuterjoin");
++ }
++ return s;
++ }
++
++ void Write58_HbmMap(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmMap o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmMap)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"name", @"", ((global::System.String)o.@name));
++ WriteAttribute(@"access", @"", ((global::System.String)o.@access));
++ WriteAttribute(@"table", @"", ((global::System.String)o.@table));
++ WriteAttribute(@"schema", @"", ((global::System.String)o.@schema));
++ WriteAttribute(@"catalog", @"", ((global::System.String)o.@catalog));
++ WriteAttribute(@"subselect", @"", ((global::System.String)o.@subselect1));
++ if (o.@lazySpecified) {
++ WriteAttribute(@"lazy", @"", Write47_HbmCollectionLazy(((global::NHibernate.Cfg.MappingSchema.HbmCollectionLazy)o.@lazy)));
++ }
++ if (((global::System.Boolean)o.@inverse) != false) {
++ WriteAttribute(@"inverse", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@inverse)));
++ }
++ if (((global::System.Boolean)o.@mutable) != true) {
++ WriteAttribute(@"mutable", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@mutable)));
++ }
++ WriteAttribute(@"cascade", @"", ((global::System.String)o.@cascade));
++ WriteAttribute(@"order-by", @"", ((global::System.String)o.@orderby));
++ WriteAttribute(@"where", @"", ((global::System.String)o.@where));
++ if (o.@batchsizeSpecified) {
++ WriteAttribute(@"batch-size", @"", System.Xml.XmlConvert.ToString((global::System.Int32)((global::System.Int32)o.@batchsize)));
++ }
++ if (o.@outerjoinSpecified) {
++ WriteAttribute(@"outer-join", @"", Write26_HbmOuterJoinStrategy(((global::NHibernate.Cfg.MappingSchema.HbmOuterJoinStrategy)o.@outerjoin)));
++ }
++ if (o.@fetchSpecified) {
++ WriteAttribute(@"fetch", @"", Write48_HbmCollectionFetchMode(((global::NHibernate.Cfg.MappingSchema.HbmCollectionFetchMode)o.@fetch)));
++ }
++ WriteAttribute(@"persister", @"", ((global::System.String)o.@persister));
++ WriteAttribute(@"collection-type", @"", ((global::System.String)o.@collectiontype));
++ WriteAttribute(@"check", @"", ((global::System.String)o.@check));
++ if (((global::System.Boolean)o.@optimisticlock) != true) {
++ WriteAttribute(@"optimistic-lock", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@optimisticlock)));
++ }
++ WriteAttribute(@"node", @"", ((global::System.String)o.@node));
++ if (((global::System.Boolean)o.@embedxml) != true) {
++ WriteAttribute(@"embed-xml", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@embedxml)));
++ }
++ if (o.@genericSpecified) {
++ WriteAttribute(@"generic", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@generic)));
++ }
++ WriteAttribute(@"sort", @"", ((global::System.String)o.@sort));
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmMeta[] a = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])o.@meta;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write4_HbmMeta(@"meta", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmMeta)a[ia]), false, false);
++ }
++ }
++ }
++ Write5_HbmSubselect(@"subselect", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmSubselect)o.@subselect), false, false);
++ Write8_HbmCache(@"cache", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCache)o.@cache), false, false);
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmSynchronize[] a = (global::NHibernate.Cfg.MappingSchema.HbmSynchronize[])o.@synchronize;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write9_HbmSynchronize(@"synchronize", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmSynchronize)a[ia]), false, false);
++ }
++ }
++ }
++ Write10_HbmComment(@"comment", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmComment)o.@comment), false, false);
++ Write31_HbmKey(@"key", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmKey)o.@key), false, false);
++ if ((object)(o.@Item) != null){
++ if (o.@Item is global::NHibernate.Cfg.MappingSchema.HbmIndex) {
++ Write55_HbmIndex(@"index", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmIndex)o.@Item), false, false);
++ }
++ else if (o.@Item is global::NHibernate.Cfg.MappingSchema.HbmIndexManyToAny) {
++ Write56_HbmIndexManyToAny(@"index-many-to-any", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmIndexManyToAny)o.@Item), false, false);
++ }
++ else if (o.@Item is global::NHibernate.Cfg.MappingSchema.HbmMapKey) {
++ Write57_HbmMapKey(@"map-key", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmMapKey)o.@Item), false, false);
++ }
++ else if (o.@Item is global::NHibernate.Cfg.MappingSchema.HbmCompositeMapKey) {
++ Write54_HbmCompositeMapKey(@"composite-map-key", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCompositeMapKey)o.@Item), false, false);
++ }
++ else if (o.@Item is global::NHibernate.Cfg.MappingSchema.HbmIndexManyToMany) {
++ Write51_HbmIndexManyToMany(@"index-many-to-many", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmIndexManyToMany)o.@Item), false, false);
++ }
++ else if (o.@Item is global::NHibernate.Cfg.MappingSchema.HbmMapKeyManyToMany) {
++ Write52_HbmMapKeyManyToMany(@"map-key-many-to-many", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmMapKeyManyToMany)o.@Item), false, false);
++ }
++ else if (o.@Item is global::NHibernate.Cfg.MappingSchema.HbmCompositeIndex) {
++ Write53_HbmCompositeIndex(@"composite-index", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCompositeIndex)o.@Item), false, false);
++ }
++ else if ((object)(o.@Item) != null){
++ throw CreateUnknownTypeException(o.@Item);
++ }
++ }
++ if ((object)(o.@Item1) != null){
++ if (o.@Item1 is global::NHibernate.Cfg.MappingSchema.HbmElement) {
++ Write39_HbmElement(@"element", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmElement)o.@Item1), false, false);
++ }
++ else if (o.@Item1 is global::NHibernate.Cfg.MappingSchema.HbmManyToAny) {
++ Write40_HbmManyToAny(@"many-to-any", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmManyToAny)o.@Item1), false, false);
++ }
++ else if (o.@Item1 is global::NHibernate.Cfg.MappingSchema.HbmManyToMany) {
++ Write42_HbmManyToMany(@"many-to-many", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmManyToMany)o.@Item1), false, false);
++ }
++ else if (o.@Item1 is global::NHibernate.Cfg.MappingSchema.HbmCompositeElement) {
++ Write38_HbmCompositeElement(@"composite-element", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCompositeElement)o.@Item1), false, false);
++ }
++ else if (o.@Item1 is global::NHibernate.Cfg.MappingSchema.HbmOneToMany) {
++ Write43_HbmOneToMany(@"one-to-many", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmOneToMany)o.@Item1), false, false);
++ }
++ else if ((object)(o.@Item1) != null){
++ throw CreateUnknownTypeException(o.@Item1);
++ }
++ }
++ Write44_HbmLoader(@"loader", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmLoader)o.@loader), false, false);
++ Write46_HbmCustomSQL(@"sql-insert", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCustomSQL)o.@sqlinsert), false, false);
++ Write46_HbmCustomSQL(@"sql-update", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCustomSQL)o.@sqlupdate), false, false);
++ Write46_HbmCustomSQL(@"sql-delete", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCustomSQL)o.@sqldelete), false, false);
++ Write46_HbmCustomSQL(@"sql-delete-all", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCustomSQL)o.@sqldeleteall), false, false);
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmFilter[] a = (global::NHibernate.Cfg.MappingSchema.HbmFilter[])o.@filter;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write41_HbmFilter(@"filter", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmFilter)a[ia]), false, false);
++ }
++ }
++ }
++ if (o.@lazySpecified) {
++ }
++ if (o.@batchsizeSpecified) {
++ }
++ if (o.@outerjoinSpecified) {
++ }
++ if (o.@fetchSpecified) {
++ }
++ if (o.@genericSpecified) {
++ }
++ WriteEndElement(o);
++ }
++
++ void Write53_HbmCompositeIndex(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmCompositeIndex o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmCompositeIndex)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"class", @"", ((global::System.String)o.@class));
++ {
++ global::System.Object[] a = (global::System.Object[])o.@Items;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ global::System.Object ai = (global::System.Object)a[ia];
++ if ((object)(ai) != null){
++ if (ai is global::NHibernate.Cfg.MappingSchema.HbmKeyManyToOne) {
++ Write20_HbmKeyManyToOne(@"key-many-to-one", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmKeyManyToOne)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmKeyProperty) {
++ Write21_HbmKeyProperty(@"key-property", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmKeyProperty)ai), false, false);
++ }
++ else if ((object)(ai) != null){
++ throw CreateUnknownTypeException(ai);
++ }
++ }
++ }
++ }
++ }
++ WriteEndElement(o);
++ }
++
++ void Write21_HbmKeyProperty(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmKeyProperty o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmKeyProperty)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"name", @"", ((global::System.String)o.@name));
++ WriteAttribute(@"access", @"", ((global::System.String)o.@access));
++ WriteAttribute(@"type", @"", ((global::System.String)o.@type1));
++ WriteAttribute(@"column", @"", ((global::System.String)o.@column1));
++ WriteAttribute(@"length", @"", ((global::System.String)o.@length));
++ WriteAttribute(@"node", @"", ((global::System.String)o.@node));
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmMeta[] a = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])o.@meta;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write4_HbmMeta(@"meta", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmMeta)a[ia]), false, false);
++ }
++ }
++ }
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmColumn[] a = (global::NHibernate.Cfg.MappingSchema.HbmColumn[])o.@column;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write13_HbmColumn(@"column", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmColumn)a[ia]), false, false);
++ }
++ }
++ }
++ Write15_HbmType(@"type", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmType)o.@type), false, false);
++ WriteEndElement(o);
++ }
++
++ void Write20_HbmKeyManyToOne(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmKeyManyToOne o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmKeyManyToOne)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"name", @"", ((global::System.String)o.@name));
++ WriteAttribute(@"access", @"", ((global::System.String)o.@access));
++ WriteAttribute(@"class", @"", ((global::System.String)o.@class));
++ WriteAttribute(@"entity-name", @"", ((global::System.String)o.@entityname));
++ WriteAttribute(@"column", @"", ((global::System.String)o.@column1));
++ WriteAttribute(@"foreign-key", @"", ((global::System.String)o.@foreignkey));
++ if (o.@lazySpecified) {
++ WriteAttribute(@"lazy", @"", Write18_HbmRestrictedLaziness(((global::NHibernate.Cfg.MappingSchema.HbmRestrictedLaziness)o.@lazy)));
++ }
++ if (((global::NHibernate.Cfg.MappingSchema.HbmNotFoundMode)o.@notfound) != global::NHibernate.Cfg.MappingSchema.HbmNotFoundMode.@Exception) {
++ WriteAttribute(@"not-found", @"", Write19_HbmNotFoundMode(((global::NHibernate.Cfg.MappingSchema.HbmNotFoundMode)o.@notfound)));
++ }
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmMeta[] a = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])o.@meta;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write4_HbmMeta(@"meta", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmMeta)a[ia]), false, false);
++ }
++ }
++ }
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmColumn[] a = (global::NHibernate.Cfg.MappingSchema.HbmColumn[])o.@column;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write13_HbmColumn(@"column", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmColumn)a[ia]), false, false);
++ }
++ }
++ }
++ if (o.@lazySpecified) {
++ }
++ WriteEndElement(o);
++ }
++
++ void Write52_HbmMapKeyManyToMany(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmMapKeyManyToMany o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmMapKeyManyToMany)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"class", @"", ((global::System.String)o.@class));
++ WriteAttribute(@"entity-name", @"", ((global::System.String)o.@entityname));
++ WriteAttribute(@"column", @"", ((global::System.String)o.@column));
++ WriteAttribute(@"formula", @"", ((global::System.String)o.@formula));
++ WriteAttribute(@"foreign-key", @"", ((global::System.String)o.@foreignkey));
++ {
++ global::System.Object[] a = (global::System.Object[])o.@Items;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ global::System.Object ai = (global::System.Object)a[ia];
++ if ((object)(ai) != null){
++ if (ai is global::NHibernate.Cfg.MappingSchema.HbmColumn) {
++ Write13_HbmColumn(@"column", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmColumn)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmFormula) {
++ Write24_HbmFormula(@"formula", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmFormula)ai), false, false);
++ }
++ else if ((object)(ai) != null){
++ throw CreateUnknownTypeException(ai);
++ }
++ }
++ }
++ }
++ }
++ WriteEndElement(o);
++ }
++
++ void Write51_HbmIndexManyToMany(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmIndexManyToMany o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmIndexManyToMany)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"class", @"", ((global::System.String)o.@class));
++ WriteAttribute(@"entity-name", @"", ((global::System.String)o.@entityname));
++ WriteAttribute(@"column", @"", ((global::System.String)o.@column1));
++ WriteAttribute(@"foreign-key", @"", ((global::System.String)o.@foreignkey));
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmColumn[] a = (global::NHibernate.Cfg.MappingSchema.HbmColumn[])o.@column;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write13_HbmColumn(@"column", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmColumn)a[ia]), false, false);
++ }
++ }
++ }
++ WriteEndElement(o);
++ }
++
++ void Write54_HbmCompositeMapKey(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmCompositeMapKey o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmCompositeMapKey)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"class", @"", ((global::System.String)o.@class));
++ {
++ global::System.Object[] a = (global::System.Object[])o.@Items;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ global::System.Object ai = (global::System.Object)a[ia];
++ if ((object)(ai) != null){
++ if (ai is global::NHibernate.Cfg.MappingSchema.HbmKeyProperty) {
++ Write21_HbmKeyProperty(@"key-property", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmKeyProperty)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmKeyManyToOne) {
++ Write20_HbmKeyManyToOne(@"key-many-to-one", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmKeyManyToOne)ai), false, false);
++ }
++ else if ((object)(ai) != null){
++ throw CreateUnknownTypeException(ai);
++ }
++ }
++ }
++ }
++ }
++ WriteEndElement(o);
++ }
++
++ void Write57_HbmMapKey(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmMapKey o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmMapKey)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"column", @"", ((global::System.String)o.@column));
++ WriteAttribute(@"formula", @"", ((global::System.String)o.@formula));
++ WriteAttribute(@"type", @"", ((global::System.String)o.@type));
++ WriteAttribute(@"length", @"", ((global::System.String)o.@length));
++ WriteAttribute(@"node", @"", ((global::System.String)o.@node));
++ {
++ global::System.Object[] a = (global::System.Object[])o.@Items;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ global::System.Object ai = (global::System.Object)a[ia];
++ if ((object)(ai) != null){
++ if (ai is global::NHibernate.Cfg.MappingSchema.HbmFormula) {
++ Write24_HbmFormula(@"formula", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmFormula)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmColumn) {
++ Write13_HbmColumn(@"column", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmColumn)ai), false, false);
++ }
++ else if ((object)(ai) != null){
++ throw CreateUnknownTypeException(ai);
++ }
++ }
++ }
++ }
++ }
++ WriteEndElement(o);
++ }
++
++ void Write56_HbmIndexManyToAny(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmIndexManyToAny o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmIndexManyToAny)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"id-type", @"", ((global::System.String)o.@idtype));
++ WriteAttribute(@"meta-type", @"", ((global::System.String)o.@metatype));
++ WriteAttribute(@"column", @"", ((global::System.String)o.@column1));
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmColumn[] a = (global::NHibernate.Cfg.MappingSchema.HbmColumn[])o.@column;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write13_HbmColumn(@"column", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmColumn)a[ia]), false, false);
++ }
++ }
++ }
++ WriteEndElement(o);
++ }
++
++ void Write60_HbmArray(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmArray o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmArray)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"name", @"", ((global::System.String)o.@name));
++ WriteAttribute(@"access", @"", ((global::System.String)o.@access));
++ WriteAttribute(@"table", @"", ((global::System.String)o.@table));
++ WriteAttribute(@"schema", @"", ((global::System.String)o.@schema));
++ WriteAttribute(@"catalog", @"", ((global::System.String)o.@catalog));
++ WriteAttribute(@"subselect", @"", ((global::System.String)o.@subselect1));
++ if (((global::System.Boolean)o.@inverse) != false) {
++ WriteAttribute(@"inverse", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@inverse)));
++ }
++ if (((global::System.Boolean)o.@mutable) != true) {
++ WriteAttribute(@"mutable", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@mutable)));
++ }
++ WriteAttribute(@"element-class", @"", ((global::System.String)o.@elementclass));
++ WriteAttribute(@"cascade", @"", ((global::System.String)o.@cascade));
++ WriteAttribute(@"where", @"", ((global::System.String)o.@where));
++ if (o.@batchsizeSpecified) {
++ WriteAttribute(@"batch-size", @"", System.Xml.XmlConvert.ToString((global::System.Int32)((global::System.Int32)o.@batchsize)));
++ }
++ if (o.@outerjoinSpecified) {
++ WriteAttribute(@"outer-join", @"", Write26_HbmOuterJoinStrategy(((global::NHibernate.Cfg.MappingSchema.HbmOuterJoinStrategy)o.@outerjoin)));
++ }
++ if (o.@fetchSpecified) {
++ WriteAttribute(@"fetch", @"", Write48_HbmCollectionFetchMode(((global::NHibernate.Cfg.MappingSchema.HbmCollectionFetchMode)o.@fetch)));
++ }
++ WriteAttribute(@"persister", @"", ((global::System.String)o.@persister));
++ WriteAttribute(@"collection-type", @"", ((global::System.String)o.@collectiontype));
++ WriteAttribute(@"check", @"", ((global::System.String)o.@check));
++ if (((global::System.Boolean)o.@optimisticlock) != true) {
++ WriteAttribute(@"optimistic-lock", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@optimisticlock)));
++ }
++ WriteAttribute(@"node", @"", ((global::System.String)o.@node));
++ if (((global::System.Boolean)o.@embedxml) != true) {
++ WriteAttribute(@"embed-xml", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@embedxml)));
++ }
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmMeta[] a = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])o.@meta;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write4_HbmMeta(@"meta", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmMeta)a[ia]), false, false);
++ }
++ }
++ }
++ Write5_HbmSubselect(@"subselect", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmSubselect)o.@subselect), false, false);
++ Write8_HbmCache(@"cache", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCache)o.@cache), false, false);
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmSynchronize[] a = (global::NHibernate.Cfg.MappingSchema.HbmSynchronize[])o.@synchronize;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write9_HbmSynchronize(@"synchronize", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmSynchronize)a[ia]), false, false);
++ }
++ }
++ }
++ Write10_HbmComment(@"comment", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmComment)o.@comment), false, false);
++ Write31_HbmKey(@"key", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmKey)o.@key), false, false);
++ if ((object)(o.@Item) != null){
++ if (o.@Item is global::NHibernate.Cfg.MappingSchema.HbmIndex) {
++ Write55_HbmIndex(@"index", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmIndex)o.@Item), false, false);
++ }
++ else if (o.@Item is global::NHibernate.Cfg.MappingSchema.HbmListIndex) {
++ Write59_HbmListIndex(@"list-index", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmListIndex)o.@Item), false, false);
++ }
++ else if ((object)(o.@Item) != null){
++ throw CreateUnknownTypeException(o.@Item);
++ }
++ }
++ if ((object)(o.@Item1) != null){
++ if (o.@Item1 is global::NHibernate.Cfg.MappingSchema.HbmManyToAny) {
++ Write40_HbmManyToAny(@"many-to-any", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmManyToAny)o.@Item1), false, false);
++ }
++ else if (o.@Item1 is global::NHibernate.Cfg.MappingSchema.HbmCompositeElement) {
++ Write38_HbmCompositeElement(@"composite-element", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCompositeElement)o.@Item1), false, false);
++ }
++ else if (o.@Item1 is global::NHibernate.Cfg.MappingSchema.HbmElement) {
++ Write39_HbmElement(@"element", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmElement)o.@Item1), false, false);
++ }
++ else if (o.@Item1 is global::NHibernate.Cfg.MappingSchema.HbmManyToMany) {
++ Write42_HbmManyToMany(@"many-to-many", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmManyToMany)o.@Item1), false, false);
++ }
++ else if (o.@Item1 is global::NHibernate.Cfg.MappingSchema.HbmOneToMany) {
++ Write43_HbmOneToMany(@"one-to-many", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmOneToMany)o.@Item1), false, false);
++ }
++ else if ((object)(o.@Item1) != null){
++ throw CreateUnknownTypeException(o.@Item1);
++ }
++ }
++ Write44_HbmLoader(@"loader", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmLoader)o.@loader), false, false);
++ Write46_HbmCustomSQL(@"sql-insert", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCustomSQL)o.@sqlinsert), false, false);
++ Write46_HbmCustomSQL(@"sql-update", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCustomSQL)o.@sqlupdate), false, false);
++ Write46_HbmCustomSQL(@"sql-delete", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCustomSQL)o.@sqldelete), false, false);
++ Write46_HbmCustomSQL(@"sql-delete-all", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCustomSQL)o.@sqldeleteall), false, false);
++ if (o.@batchsizeSpecified) {
++ }
++ if (o.@outerjoinSpecified) {
++ }
++ if (o.@fetchSpecified) {
++ }
++ WriteEndElement(o);
++ }
++
++ void Write49_HbmSet(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmSet o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmSet)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"name", @"", ((global::System.String)o.@name));
++ WriteAttribute(@"access", @"", ((global::System.String)o.@access));
++ WriteAttribute(@"table", @"", ((global::System.String)o.@table));
++ WriteAttribute(@"schema", @"", ((global::System.String)o.@schema));
++ WriteAttribute(@"catalog", @"", ((global::System.String)o.@catalog));
++ WriteAttribute(@"subselect", @"", ((global::System.String)o.@subselect1));
++ if (o.@lazySpecified) {
++ WriteAttribute(@"lazy", @"", Write47_HbmCollectionLazy(((global::NHibernate.Cfg.MappingSchema.HbmCollectionLazy)o.@lazy)));
++ }
++ if (((global::System.Boolean)o.@inverse) != false) {
++ WriteAttribute(@"inverse", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@inverse)));
++ }
++ if (((global::System.Boolean)o.@mutable) != true) {
++ WriteAttribute(@"mutable", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@mutable)));
++ }
++ WriteAttribute(@"cascade", @"", ((global::System.String)o.@cascade));
++ WriteAttribute(@"order-by", @"", ((global::System.String)o.@orderby));
++ WriteAttribute(@"where", @"", ((global::System.String)o.@where));
++ if (o.@batchsizeSpecified) {
++ WriteAttribute(@"batch-size", @"", System.Xml.XmlConvert.ToString((global::System.Int32)((global::System.Int32)o.@batchsize)));
++ }
++ if (o.@outerjoinSpecified) {
++ WriteAttribute(@"outer-join", @"", Write26_HbmOuterJoinStrategy(((global::NHibernate.Cfg.MappingSchema.HbmOuterJoinStrategy)o.@outerjoin)));
++ }
++ if (o.@fetchSpecified) {
++ WriteAttribute(@"fetch", @"", Write48_HbmCollectionFetchMode(((global::NHibernate.Cfg.MappingSchema.HbmCollectionFetchMode)o.@fetch)));
++ }
++ WriteAttribute(@"persister", @"", ((global::System.String)o.@persister));
++ WriteAttribute(@"collection-type", @"", ((global::System.String)o.@collectiontype));
++ WriteAttribute(@"check", @"", ((global::System.String)o.@check));
++ if (((global::System.Boolean)o.@optimisticlock) != true) {
++ WriteAttribute(@"optimistic-lock", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@optimisticlock)));
++ }
++ WriteAttribute(@"node", @"", ((global::System.String)o.@node));
++ if (((global::System.Boolean)o.@embedxml) != true) {
++ WriteAttribute(@"embed-xml", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@embedxml)));
++ }
++ if (o.@genericSpecified) {
++ WriteAttribute(@"generic", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@generic)));
++ }
++ WriteAttribute(@"sort", @"", ((global::System.String)o.@sort));
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmMeta[] a = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])o.@meta;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write4_HbmMeta(@"meta", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmMeta)a[ia]), false, false);
++ }
++ }
++ }
++ Write5_HbmSubselect(@"subselect", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmSubselect)o.@subselect), false, false);
++ Write8_HbmCache(@"cache", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCache)o.@cache), false, false);
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmSynchronize[] a = (global::NHibernate.Cfg.MappingSchema.HbmSynchronize[])o.@synchronize;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write9_HbmSynchronize(@"synchronize", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmSynchronize)a[ia]), false, false);
++ }
++ }
++ }
++ Write10_HbmComment(@"comment", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmComment)o.@comment), false, false);
++ Write31_HbmKey(@"key", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmKey)o.@key), false, false);
++ if ((object)(o.@Item) != null){
++ if (o.@Item is global::NHibernate.Cfg.MappingSchema.HbmManyToMany) {
++ Write42_HbmManyToMany(@"many-to-many", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmManyToMany)o.@Item), false, false);
++ }
++ else if (o.@Item is global::NHibernate.Cfg.MappingSchema.HbmOneToMany) {
++ Write43_HbmOneToMany(@"one-to-many", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmOneToMany)o.@Item), false, false);
++ }
++ else if (o.@Item is global::NHibernate.Cfg.MappingSchema.HbmManyToAny) {
++ Write40_HbmManyToAny(@"many-to-any", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmManyToAny)o.@Item), false, false);
++ }
++ else if (o.@Item is global::NHibernate.Cfg.MappingSchema.HbmCompositeElement) {
++ Write38_HbmCompositeElement(@"composite-element", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCompositeElement)o.@Item), false, false);
++ }
++ else if (o.@Item is global::NHibernate.Cfg.MappingSchema.HbmElement) {
++ Write39_HbmElement(@"element", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmElement)o.@Item), false, false);
++ }
++ else if ((object)(o.@Item) != null){
++ throw CreateUnknownTypeException(o.@Item);
++ }
++ }
++ Write44_HbmLoader(@"loader", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmLoader)o.@loader), false, false);
++ Write46_HbmCustomSQL(@"sql-insert", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCustomSQL)o.@sqlinsert), false, false);
++ Write46_HbmCustomSQL(@"sql-update", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCustomSQL)o.@sqlupdate), false, false);
++ Write46_HbmCustomSQL(@"sql-delete", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCustomSQL)o.@sqldelete), false, false);
++ Write46_HbmCustomSQL(@"sql-delete-all", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCustomSQL)o.@sqldeleteall), false, false);
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmFilter[] a = (global::NHibernate.Cfg.MappingSchema.HbmFilter[])o.@filter;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write41_HbmFilter(@"filter", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmFilter)a[ia]), false, false);
++ }
++ }
++ }
++ if (o.@lazySpecified) {
++ }
++ if (o.@batchsizeSpecified) {
++ }
++ if (o.@outerjoinSpecified) {
++ }
++ if (o.@fetchSpecified) {
++ }
++ if (o.@genericSpecified) {
++ }
++ WriteEndElement(o);
++ }
++
++ void Write67_HbmList(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmList o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmList)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"name", @"", ((global::System.String)o.@name));
++ WriteAttribute(@"access", @"", ((global::System.String)o.@access));
++ WriteAttribute(@"table", @"", ((global::System.String)o.@table));
++ WriteAttribute(@"schema", @"", ((global::System.String)o.@schema));
++ WriteAttribute(@"catalog", @"", ((global::System.String)o.@catalog));
++ WriteAttribute(@"subselect", @"", ((global::System.String)o.@subselect1));
++ if (o.@lazySpecified) {
++ WriteAttribute(@"lazy", @"", Write47_HbmCollectionLazy(((global::NHibernate.Cfg.MappingSchema.HbmCollectionLazy)o.@lazy)));
++ }
++ if (((global::System.Boolean)o.@inverse) != false) {
++ WriteAttribute(@"inverse", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@inverse)));
++ }
++ if (((global::System.Boolean)o.@mutable) != true) {
++ WriteAttribute(@"mutable", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@mutable)));
++ }
++ WriteAttribute(@"cascade", @"", ((global::System.String)o.@cascade));
++ WriteAttribute(@"order-by", @"", ((global::System.String)o.@orderby));
++ WriteAttribute(@"where", @"", ((global::System.String)o.@where));
++ if (o.@batchsizeSpecified) {
++ WriteAttribute(@"batch-size", @"", System.Xml.XmlConvert.ToString((global::System.Int32)((global::System.Int32)o.@batchsize)));
++ }
++ if (o.@outerjoinSpecified) {
++ WriteAttribute(@"outer-join", @"", Write26_HbmOuterJoinStrategy(((global::NHibernate.Cfg.MappingSchema.HbmOuterJoinStrategy)o.@outerjoin)));
++ }
++ if (o.@fetchSpecified) {
++ WriteAttribute(@"fetch", @"", Write48_HbmCollectionFetchMode(((global::NHibernate.Cfg.MappingSchema.HbmCollectionFetchMode)o.@fetch)));
++ }
++ WriteAttribute(@"persister", @"", ((global::System.String)o.@persister));
++ WriteAttribute(@"collection-type", @"", ((global::System.String)o.@collectiontype));
++ WriteAttribute(@"check", @"", ((global::System.String)o.@check));
++ if (((global::System.Boolean)o.@optimisticlock) != true) {
++ WriteAttribute(@"optimistic-lock", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@optimisticlock)));
++ }
++ WriteAttribute(@"node", @"", ((global::System.String)o.@node));
++ if (((global::System.Boolean)o.@embedxml) != true) {
++ WriteAttribute(@"embed-xml", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@embedxml)));
++ }
++ if (o.@genericSpecified) {
++ WriteAttribute(@"generic", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@generic)));
++ }
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmMeta[] a = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])o.@meta;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write4_HbmMeta(@"meta", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmMeta)a[ia]), false, false);
++ }
++ }
++ }
++ Write5_HbmSubselect(@"subselect", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmSubselect)o.@subselect), false, false);
++ Write8_HbmCache(@"cache", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCache)o.@cache), false, false);
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmSynchronize[] a = (global::NHibernate.Cfg.MappingSchema.HbmSynchronize[])o.@synchronize;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write9_HbmSynchronize(@"synchronize", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmSynchronize)a[ia]), false, false);
++ }
++ }
++ }
++ Write10_HbmComment(@"comment", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmComment)o.@comment), false, false);
++ Write31_HbmKey(@"key", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmKey)o.@key), false, false);
++ if ((object)(o.@Item) != null){
++ if (o.@Item is global::NHibernate.Cfg.MappingSchema.HbmListIndex) {
++ Write59_HbmListIndex(@"list-index", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmListIndex)o.@Item), false, false);
++ }
++ else if (o.@Item is global::NHibernate.Cfg.MappingSchema.HbmIndex) {
++ Write55_HbmIndex(@"index", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmIndex)o.@Item), false, false);
++ }
++ else if ((object)(o.@Item) != null){
++ throw CreateUnknownTypeException(o.@Item);
++ }
++ }
++ if ((object)(o.@Item1) != null){
++ if (o.@Item1 is global::NHibernate.Cfg.MappingSchema.HbmManyToMany) {
++ Write42_HbmManyToMany(@"many-to-many", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmManyToMany)o.@Item1), false, false);
++ }
++ else if (o.@Item1 is global::NHibernate.Cfg.MappingSchema.HbmOneToMany) {
++ Write43_HbmOneToMany(@"one-to-many", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmOneToMany)o.@Item1), false, false);
++ }
++ else if (o.@Item1 is global::NHibernate.Cfg.MappingSchema.HbmManyToAny) {
++ Write40_HbmManyToAny(@"many-to-any", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmManyToAny)o.@Item1), false, false);
++ }
++ else if (o.@Item1 is global::NHibernate.Cfg.MappingSchema.HbmCompositeElement) {
++ Write38_HbmCompositeElement(@"composite-element", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCompositeElement)o.@Item1), false, false);
++ }
++ else if (o.@Item1 is global::NHibernate.Cfg.MappingSchema.HbmElement) {
++ Write39_HbmElement(@"element", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmElement)o.@Item1), false, false);
++ }
++ else if ((object)(o.@Item1) != null){
++ throw CreateUnknownTypeException(o.@Item1);
++ }
++ }
++ Write44_HbmLoader(@"loader", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmLoader)o.@loader), false, false);
++ Write46_HbmCustomSQL(@"sql-insert", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCustomSQL)o.@sqlinsert), false, false);
++ Write46_HbmCustomSQL(@"sql-update", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCustomSQL)o.@sqlupdate), false, false);
++ Write46_HbmCustomSQL(@"sql-delete", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCustomSQL)o.@sqldelete), false, false);
++ Write46_HbmCustomSQL(@"sql-delete-all", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCustomSQL)o.@sqldeleteall), false, false);
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmFilter[] a = (global::NHibernate.Cfg.MappingSchema.HbmFilter[])o.@filter;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write41_HbmFilter(@"filter", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmFilter)a[ia]), false, false);
++ }
++ }
++ }
++ if (o.@lazySpecified) {
++ }
++ if (o.@batchsizeSpecified) {
++ }
++ if (o.@outerjoinSpecified) {
++ }
++ if (o.@fetchSpecified) {
++ }
++ if (o.@genericSpecified) {
++ }
++ WriteEndElement(o);
++ }
++
++ void Write66_HbmIdbag(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmIdbag o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmIdbag)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"name", @"", ((global::System.String)o.@name));
++ WriteAttribute(@"access", @"", ((global::System.String)o.@access));
++ WriteAttribute(@"table", @"", ((global::System.String)o.@table));
++ WriteAttribute(@"schema", @"", ((global::System.String)o.@schema));
++ WriteAttribute(@"catalog", @"", ((global::System.String)o.@catalog));
++ WriteAttribute(@"subselect", @"", ((global::System.String)o.@subselect1));
++ if (o.@lazySpecified) {
++ WriteAttribute(@"lazy", @"", Write47_HbmCollectionLazy(((global::NHibernate.Cfg.MappingSchema.HbmCollectionLazy)o.@lazy)));
++ }
++ if (((global::System.Boolean)o.@inverse) != false) {
++ WriteAttribute(@"inverse", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@inverse)));
++ }
++ if (((global::System.Boolean)o.@mutable) != true) {
++ WriteAttribute(@"mutable", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@mutable)));
++ }
++ WriteAttribute(@"cascade", @"", ((global::System.String)o.@cascade));
++ WriteAttribute(@"order-by", @"", ((global::System.String)o.@orderby));
++ WriteAttribute(@"where", @"", ((global::System.String)o.@where));
++ if (o.@batchsizeSpecified) {
++ WriteAttribute(@"batch-size", @"", System.Xml.XmlConvert.ToString((global::System.Int32)((global::System.Int32)o.@batchsize)));
++ }
++ if (o.@outerjoinSpecified) {
++ WriteAttribute(@"outer-join", @"", Write26_HbmOuterJoinStrategy(((global::NHibernate.Cfg.MappingSchema.HbmOuterJoinStrategy)o.@outerjoin)));
++ }
++ if (o.@fetchSpecified) {
++ WriteAttribute(@"fetch", @"", Write48_HbmCollectionFetchMode(((global::NHibernate.Cfg.MappingSchema.HbmCollectionFetchMode)o.@fetch)));
++ }
++ WriteAttribute(@"persister", @"", ((global::System.String)o.@persister));
++ WriteAttribute(@"collection-type", @"", ((global::System.String)o.@collectiontype));
++ WriteAttribute(@"check", @"", ((global::System.String)o.@check));
++ if (((global::System.Boolean)o.@optimisticlock) != true) {
++ WriteAttribute(@"optimistic-lock", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@optimisticlock)));
++ }
++ WriteAttribute(@"node", @"", ((global::System.String)o.@node));
++ if (((global::System.Boolean)o.@embedxml) != true) {
++ WriteAttribute(@"embed-xml", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@embedxml)));
++ }
++ if (o.@genericSpecified) {
++ WriteAttribute(@"generic", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@generic)));
++ }
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmMeta[] a = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])o.@meta;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write4_HbmMeta(@"meta", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmMeta)a[ia]), false, false);
++ }
++ }
++ }
++ Write5_HbmSubselect(@"subselect", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmSubselect)o.@subselect), false, false);
++ Write8_HbmCache(@"cache", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCache)o.@cache), false, false);
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmSynchronize[] a = (global::NHibernate.Cfg.MappingSchema.HbmSynchronize[])o.@synchronize;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write9_HbmSynchronize(@"synchronize", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmSynchronize)a[ia]), false, false);
++ }
++ }
++ }
++ Write10_HbmComment(@"comment", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmComment)o.@comment), false, false);
++ Write65_HbmCollectionId(@"collection-id", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCollectionId)o.@collectionid), false, false);
++ Write31_HbmKey(@"key", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmKey)o.@key), false, false);
++ if ((object)(o.@Item) != null){
++ if (o.@Item is global::NHibernate.Cfg.MappingSchema.HbmManyToAny) {
++ Write40_HbmManyToAny(@"many-to-any", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmManyToAny)o.@Item), false, false);
++ }
++ else if (o.@Item is global::NHibernate.Cfg.MappingSchema.HbmManyToMany) {
++ Write42_HbmManyToMany(@"many-to-many", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmManyToMany)o.@Item), false, false);
++ }
++ else if (o.@Item is global::NHibernate.Cfg.MappingSchema.HbmElement) {
++ Write39_HbmElement(@"element", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmElement)o.@Item), false, false);
++ }
++ else if (o.@Item is global::NHibernate.Cfg.MappingSchema.HbmCompositeElement) {
++ Write38_HbmCompositeElement(@"composite-element", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCompositeElement)o.@Item), false, false);
++ }
++ else if ((object)(o.@Item) != null){
++ throw CreateUnknownTypeException(o.@Item);
++ }
++ }
++ Write44_HbmLoader(@"loader", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmLoader)o.@loader), false, false);
++ Write46_HbmCustomSQL(@"sql-insert", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCustomSQL)o.@sqlinsert), false, false);
++ Write46_HbmCustomSQL(@"sql-update", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCustomSQL)o.@sqlupdate), false, false);
++ Write46_HbmCustomSQL(@"sql-delete", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCustomSQL)o.@sqldelete), false, false);
++ Write46_HbmCustomSQL(@"sql-delete-all", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCustomSQL)o.@sqldeleteall), false, false);
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmFilter[] a = (global::NHibernate.Cfg.MappingSchema.HbmFilter[])o.@filter;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write41_HbmFilter(@"filter", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmFilter)a[ia]), false, false);
++ }
++ }
++ }
++ if (o.@lazySpecified) {
++ }
++ if (o.@batchsizeSpecified) {
++ }
++ if (o.@outerjoinSpecified) {
++ }
++ if (o.@fetchSpecified) {
++ }
++ if (o.@genericSpecified) {
++ }
++ WriteEndElement(o);
++ }
++
++ void Write65_HbmCollectionId(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmCollectionId o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmCollectionId)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"column", @"", ((global::System.String)o.@column1));
++ WriteAttribute(@"type", @"", ((global::System.String)o.@type));
++ WriteAttribute(@"length", @"", ((global::System.String)o.@length));
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmMeta[] a = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])o.@meta;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write4_HbmMeta(@"meta", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmMeta)a[ia]), false, false);
++ }
++ }
++ }
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmColumn[] a = (global::NHibernate.Cfg.MappingSchema.HbmColumn[])o.@column;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write13_HbmColumn(@"column", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmColumn)a[ia]), false, false);
++ }
++ }
++ }
++ Write16_HbmGenerator(@"generator", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmGenerator)o.@generator), false, false);
++ WriteEndElement(o);
++ }
++
++ void Write16_HbmGenerator(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmGenerator o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmGenerator)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"class", @"", ((global::System.String)o.@class));
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmParam[] a = (global::NHibernate.Cfg.MappingSchema.HbmParam[])o.@param;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write14_HbmParam(@"param", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmParam)a[ia]), false, false);
++ }
++ }
++ }
++ WriteEndElement(o);
++ }
++
++ void Write12_HbmTuplizer(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmTuplizer o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmTuplizer)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ if (o.@entitymodeSpecified) {
++ WriteAttribute(@"entity-mode", @"", Write11_HbmTuplizerEntitymode(((global::NHibernate.Cfg.MappingSchema.HbmTuplizerEntitymode)o.@entitymode)));
++ }
++ WriteAttribute(@"class", @"", ((global::System.String)o.@class));
++ if (o.@entitymodeSpecified) {
++ }
++ WriteEndElement(o);
++ }
++
++ string Write11_HbmTuplizerEntitymode(global::NHibernate.Cfg.MappingSchema.HbmTuplizerEntitymode v) {
++ string s = null;
++ switch (v) {
++ case global::NHibernate.Cfg.MappingSchema.HbmTuplizerEntitymode.@Poco: s = @"poco"; break;
++ case global::NHibernate.Cfg.MappingSchema.HbmTuplizerEntitymode.@Xml: s = @"xml"; break;
++ case global::NHibernate.Cfg.MappingSchema.HbmTuplizerEntitymode.@DynamicMap: s = @"dynamic-map"; break;
++ default: throw CreateInvalidEnumValueException(((System.Int64)v).ToString(System.Globalization.CultureInfo.InvariantCulture), @"NHibernate.Cfg.MappingSchema.HbmTuplizerEntitymode");
++ }
++ return s;
++ }
++
++ string Write77_HbmJoinFetch(global::NHibernate.Cfg.MappingSchema.HbmJoinFetch v) {
++ string s = null;
++ switch (v) {
++ case global::NHibernate.Cfg.MappingSchema.HbmJoinFetch.@Join: s = @"join"; break;
++ case global::NHibernate.Cfg.MappingSchema.HbmJoinFetch.@Select: s = @"select"; break;
++ default: throw CreateInvalidEnumValueException(((System.Int64)v).ToString(System.Globalization.CultureInfo.InvariantCulture), @"NHibernate.Cfg.MappingSchema.HbmJoinFetch");
++ }
++ return s;
++ }
++
++ void Write95_HbmUnionSubclass(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmUnionSubclass o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmUnionSubclass)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"entity-name", @"", ((global::System.String)o.@entityname));
++ WriteAttribute(@"name", @"", ((global::System.String)o.@name));
++ WriteAttribute(@"proxy", @"", ((global::System.String)o.@proxy));
++ WriteAttribute(@"table", @"", ((global::System.String)o.@table));
++ WriteAttribute(@"schema", @"", ((global::System.String)o.@schema));
++ WriteAttribute(@"catalog", @"", ((global::System.String)o.@catalog));
++ WriteAttribute(@"subselect", @"", ((global::System.String)o.@subselect1));
++ if (((global::System.Boolean)o.@dynamicupdate) != false) {
++ WriteAttribute(@"dynamic-update", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@dynamicupdate)));
++ }
++ if (((global::System.Boolean)o.@dynamicinsert) != false) {
++ WriteAttribute(@"dynamic-insert", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@dynamicinsert)));
++ }
++ if (((global::System.Boolean)o.@selectbeforeupdate) != false) {
++ WriteAttribute(@"select-before-update", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@selectbeforeupdate)));
++ }
++ WriteAttribute(@"extends", @"", ((global::System.String)o.@extends));
++ if (o.@lazySpecified) {
++ WriteAttribute(@"lazy", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@lazy)));
++ }
++ if (o.@abstractSpecified) {
++ WriteAttribute(@"abstract", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@abstract)));
++ }
++ WriteAttribute(@"persister", @"", ((global::System.String)o.@persister));
++ WriteAttribute(@"check", @"", ((global::System.String)o.@check));
++ WriteAttribute(@"batch-size", @"", ((global::System.String)o.@batchsize));
++ WriteAttribute(@"node", @"", ((global::System.String)o.@node));
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmMeta[] a = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])o.@meta;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write4_HbmMeta(@"meta", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmMeta)a[ia]), false, false);
++ }
++ }
++ }
++ Write5_HbmSubselect(@"subselect", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmSubselect)o.@subselect), false, false);
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmSynchronize[] a = (global::NHibernate.Cfg.MappingSchema.HbmSynchronize[])o.@synchronize;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write9_HbmSynchronize(@"synchronize", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmSynchronize)a[ia]), false, false);
++ }
++ }
++ }
++ Write10_HbmComment(@"comment", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmComment)o.@comment), false, false);
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmTuplizer[] a = (global::NHibernate.Cfg.MappingSchema.HbmTuplizer[])o.@tuplizer;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write12_HbmTuplizer(@"tuplizer", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmTuplizer)a[ia]), false, false);
++ }
++ }
++ }
++ {
++ global::System.Object[] a = (global::System.Object[])o.@Items;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ global::System.Object ai = (global::System.Object)a[ia];
++ if ((object)(ai) != null){
++ if (ai is global::NHibernate.Cfg.MappingSchema.HbmPrimitiveArray) {
++ Write64_HbmPrimitiveArray(@"primitive-array", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmPrimitiveArray)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmArray) {
++ Write60_HbmArray(@"array", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmArray)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmMap) {
++ Write58_HbmMap(@"map", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmMap)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmProperties) {
++ Write76_HbmProperties(@"properties", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmProperties)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmAny) {
++ Write36_HbmAny(@"any", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmAny)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmSet) {
++ Write49_HbmSet(@"set", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmSet)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmProperty) {
++ Write34_HbmProperty(@"property", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmProperty)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmComponent) {
++ Write68_HbmComponent(@"component", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmComponent)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmBag) {
++ Write50_HbmBag(@"bag", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmBag)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmOneToOne) {
++ Write61_HbmOneToOne(@"one-to-one", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmOneToOne)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmDynamicComponent) {
++ Write69_HbmDynamicComponent(@"dynamic-component", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmDynamicComponent)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmManyToOne) {
++ Write29_HbmManyToOne(@"many-to-one", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmManyToOne)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmList) {
++ Write67_HbmList(@"list", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmList)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmIdbag) {
++ Write66_HbmIdbag(@"idbag", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmIdbag)ai), false, false);
++ }
++ else if ((object)(ai) != null){
++ throw CreateUnknownTypeException(ai);
++ }
++ }
++ }
++ }
++ }
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmUnionSubclass[] a = (global::NHibernate.Cfg.MappingSchema.HbmUnionSubclass[])o.@unionsubclass1;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write95_HbmUnionSubclass(@"union-subclass", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmUnionSubclass)a[ia]), false, false);
++ }
++ }
++ }
++ Write44_HbmLoader(@"loader", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmLoader)o.@loader), false, false);
++ Write46_HbmCustomSQL(@"sql-insert", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCustomSQL)o.@sqlinsert), false, false);
++ Write46_HbmCustomSQL(@"sql-update", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCustomSQL)o.@sqlupdate), false, false);
++ Write46_HbmCustomSQL(@"sql-delete", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCustomSQL)o.@sqldelete), false, false);
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmResultSet[] a = (global::NHibernate.Cfg.MappingSchema.HbmResultSet[])o.@resultset;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write87_HbmResultSet(@"resultset", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmResultSet)a[ia]), false, false);
++ }
++ }
++ }
++ {
++ global::System.Object[] a = (global::System.Object[])o.@Items1;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ global::System.Object ai = (global::System.Object)a[ia];
++ if ((object)(ai) != null){
++ if (ai is global::NHibernate.Cfg.MappingSchema.HbmQuery) {
++ Write91_HbmQuery(@"query", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmQuery)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmSqlQuery) {
++ Write92_HbmSqlQuery(@"sql-query", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmSqlQuery)ai), false, false);
++ }
++ else if ((object)(ai) != null){
++ throw CreateUnknownTypeException(ai);
++ }
++ }
++ }
++ }
++ }
++ if (o.@lazySpecified) {
++ }
++ if (o.@abstractSpecified) {
++ }
++ WriteEndElement(o);
++ }
++
++ void Write76_HbmProperties(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmProperties o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmProperties)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"name", @"", ((global::System.String)o.@name));
++ if (((global::System.Boolean)o.@unique) != false) {
++ WriteAttribute(@"unique", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@unique)));
++ }
++ if (((global::System.Boolean)o.@insert) != true) {
++ WriteAttribute(@"insert", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@insert)));
++ }
++ if (((global::System.Boolean)o.@update) != true) {
++ WriteAttribute(@"update", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@update)));
++ }
++ if (((global::System.Boolean)o.@optimisticlock) != true) {
++ WriteAttribute(@"optimistic-lock", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@optimisticlock)));
++ }
++ WriteAttribute(@"node", @"", ((global::System.String)o.@node));
++ {
++ global::System.Object[] a = (global::System.Object[])o.@Items;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ global::System.Object ai = (global::System.Object)a[ia];
++ if ((object)(ai) != null){
++ if (ai is global::NHibernate.Cfg.MappingSchema.HbmComponent) {
++ Write68_HbmComponent(@"component", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmComponent)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmManyToOne) {
++ Write29_HbmManyToOne(@"many-to-one", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmManyToOne)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmDynamicComponent) {
++ Write69_HbmDynamicComponent(@"dynamic-component", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmDynamicComponent)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmProperty) {
++ Write34_HbmProperty(@"property", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmProperty)ai), false, false);
++ }
++ else if ((object)(ai) != null){
++ throw CreateUnknownTypeException(ai);
++ }
++ }
++ }
++ }
++ }
++ WriteEndElement(o);
++ }
++
++ void Write93_HbmJoinedSubclass(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmJoinedSubclass o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmJoinedSubclass)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"entity-name", @"", ((global::System.String)o.@entityname));
++ WriteAttribute(@"name", @"", ((global::System.String)o.@name));
++ WriteAttribute(@"proxy", @"", ((global::System.String)o.@proxy));
++ WriteAttribute(@"table", @"", ((global::System.String)o.@table));
++ WriteAttribute(@"schema", @"", ((global::System.String)o.@schema));
++ WriteAttribute(@"catalog", @"", ((global::System.String)o.@catalog));
++ WriteAttribute(@"subselect", @"", ((global::System.String)o.@subselect1));
++ if (((global::System.Boolean)o.@dynamicupdate) != false) {
++ WriteAttribute(@"dynamic-update", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@dynamicupdate)));
++ }
++ if (((global::System.Boolean)o.@dynamicinsert) != false) {
++ WriteAttribute(@"dynamic-insert", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@dynamicinsert)));
++ }
++ if (((global::System.Boolean)o.@selectbeforeupdate) != false) {
++ WriteAttribute(@"select-before-update", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@selectbeforeupdate)));
++ }
++ WriteAttribute(@"extends", @"", ((global::System.String)o.@extends));
++ if (o.@lazySpecified) {
++ WriteAttribute(@"lazy", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@lazy)));
++ }
++ if (o.@abstractSpecified) {
++ WriteAttribute(@"abstract", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@abstract)));
++ }
++ WriteAttribute(@"persister", @"", ((global::System.String)o.@persister));
++ WriteAttribute(@"check", @"", ((global::System.String)o.@check));
++ WriteAttribute(@"batch-size", @"", ((global::System.String)o.@batchsize));
++ WriteAttribute(@"node", @"", ((global::System.String)o.@node));
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmMeta[] a = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])o.@meta;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write4_HbmMeta(@"meta", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmMeta)a[ia]), false, false);
++ }
++ }
++ }
++ Write5_HbmSubselect(@"subselect", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmSubselect)o.@subselect), false, false);
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmSynchronize[] a = (global::NHibernate.Cfg.MappingSchema.HbmSynchronize[])o.@synchronize;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write9_HbmSynchronize(@"synchronize", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmSynchronize)a[ia]), false, false);
++ }
++ }
++ }
++ Write10_HbmComment(@"comment", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmComment)o.@comment), false, false);
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmTuplizer[] a = (global::NHibernate.Cfg.MappingSchema.HbmTuplizer[])o.@tuplizer;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write12_HbmTuplizer(@"tuplizer", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmTuplizer)a[ia]), false, false);
++ }
++ }
++ }
++ Write31_HbmKey(@"key", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmKey)o.@key), false, false);
++ {
++ global::System.Object[] a = (global::System.Object[])o.@Items;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ global::System.Object ai = (global::System.Object)a[ia];
++ if ((object)(ai) != null){
++ if (ai is global::NHibernate.Cfg.MappingSchema.HbmPrimitiveArray) {
++ Write64_HbmPrimitiveArray(@"primitive-array", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmPrimitiveArray)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmSet) {
++ Write49_HbmSet(@"set", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmSet)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmProperty) {
++ Write34_HbmProperty(@"property", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmProperty)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmIdbag) {
++ Write66_HbmIdbag(@"idbag", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmIdbag)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmBag) {
++ Write50_HbmBag(@"bag", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmBag)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmArray) {
++ Write60_HbmArray(@"array", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmArray)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmAny) {
++ Write36_HbmAny(@"any", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmAny)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmList) {
++ Write67_HbmList(@"list", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmList)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmDynamicComponent) {
++ Write69_HbmDynamicComponent(@"dynamic-component", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmDynamicComponent)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmMap) {
++ Write58_HbmMap(@"map", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmMap)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmComponent) {
++ Write68_HbmComponent(@"component", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmComponent)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmOneToOne) {
++ Write61_HbmOneToOne(@"one-to-one", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmOneToOne)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmProperties) {
++ Write76_HbmProperties(@"properties", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmProperties)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmManyToOne) {
++ Write29_HbmManyToOne(@"many-to-one", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmManyToOne)ai), false, false);
++ }
++ else if ((object)(ai) != null){
++ throw CreateUnknownTypeException(ai);
++ }
++ }
++ }
++ }
++ }
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmJoinedSubclass[] a = (global::NHibernate.Cfg.MappingSchema.HbmJoinedSubclass[])o.@joinedsubclass1;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write93_HbmJoinedSubclass(@"joined-subclass", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmJoinedSubclass)a[ia]), false, false);
++ }
++ }
++ }
++ Write44_HbmLoader(@"loader", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmLoader)o.@loader), false, false);
++ Write46_HbmCustomSQL(@"sql-insert", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCustomSQL)o.@sqlinsert), false, false);
++ Write46_HbmCustomSQL(@"sql-update", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCustomSQL)o.@sqlupdate), false, false);
++ Write46_HbmCustomSQL(@"sql-delete", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCustomSQL)o.@sqldelete), false, false);
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmResultSet[] a = (global::NHibernate.Cfg.MappingSchema.HbmResultSet[])o.@resultset;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write87_HbmResultSet(@"resultset", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmResultSet)a[ia]), false, false);
++ }
++ }
++ }
++ {
++ global::System.Object[] a = (global::System.Object[])o.@Items1;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ global::System.Object ai = (global::System.Object)a[ia];
++ if ((object)(ai) != null){
++ if (ai is global::NHibernate.Cfg.MappingSchema.HbmSqlQuery) {
++ Write92_HbmSqlQuery(@"sql-query", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmSqlQuery)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmQuery) {
++ Write91_HbmQuery(@"query", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmQuery)ai), false, false);
++ }
++ else if ((object)(ai) != null){
++ throw CreateUnknownTypeException(ai);
++ }
++ }
++ }
++ }
++ }
++ if (o.@lazySpecified) {
++ }
++ if (o.@abstractSpecified) {
++ }
++ WriteEndElement(o);
++ }
++
++ void Write98_HbmClass(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmClass o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmClass)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"entity-name", @"", ((global::System.String)o.@entityname));
++ WriteAttribute(@"name", @"", ((global::System.String)o.@name));
++ WriteAttribute(@"proxy", @"", ((global::System.String)o.@proxy));
++ if (o.@lazySpecified) {
++ WriteAttribute(@"lazy", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@lazy)));
++ }
++ WriteAttribute(@"schema-action", @"", ((global::System.String)o.@schemaaction));
++ WriteAttribute(@"table", @"", ((global::System.String)o.@table));
++ WriteAttribute(@"schema", @"", ((global::System.String)o.@schema));
++ WriteAttribute(@"catalog", @"", ((global::System.String)o.@catalog));
++ WriteAttribute(@"subselect", @"", ((global::System.String)o.@subselect1));
++ WriteAttribute(@"discriminator-value", @"", ((global::System.String)o.@discriminatorvalue));
++ if (((global::System.Boolean)o.@mutable) != true) {
++ WriteAttribute(@"mutable", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@mutable)));
++ }
++ if (o.@abstractSpecified) {
++ WriteAttribute(@"abstract", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@abstract)));
++ }
++ if (((global::NHibernate.Cfg.MappingSchema.HbmPolymorphismType)o.@polymorphism) != global::NHibernate.Cfg.MappingSchema.HbmPolymorphismType.@Implicit) {
++ WriteAttribute(@"polymorphism", @"", Write96_HbmPolymorphismType(((global::NHibernate.Cfg.MappingSchema.HbmPolymorphismType)o.@polymorphism)));
++ }
++ WriteAttribute(@"where", @"", ((global::System.String)o.@where));
++ WriteAttribute(@"persister", @"", ((global::System.String)o.@persister));
++ if (((global::System.Boolean)o.@dynamicupdate) != false) {
++ WriteAttribute(@"dynamic-update", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@dynamicupdate)));
++ }
++ if (((global::System.Boolean)o.@dynamicinsert) != false) {
++ WriteAttribute(@"dynamic-insert", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@dynamicinsert)));
++ }
++ if (o.@batchsizeSpecified) {
++ WriteAttribute(@"batch-size", @"", System.Xml.XmlConvert.ToString((global::System.Int32)((global::System.Int32)o.@batchsize)));
++ }
++ if (((global::System.Boolean)o.@selectbeforeupdate) != false) {
++ WriteAttribute(@"select-before-update", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@selectbeforeupdate)));
++ }
++ if (((global::NHibernate.Cfg.MappingSchema.HbmOptimisticLockMode)o.@optimisticlock) != global::NHibernate.Cfg.MappingSchema.HbmOptimisticLockMode.@Version) {
++ WriteAttribute(@"optimistic-lock", @"", Write97_HbmOptimisticLockMode(((global::NHibernate.Cfg.MappingSchema.HbmOptimisticLockMode)o.@optimisticlock)));
++ }
++ WriteAttribute(@"check", @"", ((global::System.String)o.@check));
++ WriteAttribute(@"rowid", @"", ((global::System.String)o.@rowid));
++ WriteAttribute(@"node", @"", ((global::System.String)o.@node));
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmMeta[] a = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])o.@meta;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write4_HbmMeta(@"meta", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmMeta)a[ia]), false, false);
++ }
++ }
++ }
++ Write5_HbmSubselect(@"subselect", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmSubselect)o.@subselect), false, false);
++ Write8_HbmCache(@"cache", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCache)o.@cache), false, false);
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmSynchronize[] a = (global::NHibernate.Cfg.MappingSchema.HbmSynchronize[])o.@synchronize;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write9_HbmSynchronize(@"synchronize", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmSynchronize)a[ia]), false, false);
++ }
++ }
++ }
++ Write10_HbmComment(@"comment", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmComment)o.@comment), false, false);
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmTuplizer[] a = (global::NHibernate.Cfg.MappingSchema.HbmTuplizer[])o.@tuplizer;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write12_HbmTuplizer(@"tuplizer", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmTuplizer)a[ia]), false, false);
++ }
++ }
++ }
++ if ((object)(o.@Item) != null){
++ if (o.@Item is global::NHibernate.Cfg.MappingSchema.HbmCompositeId) {
++ Write23_HbmCompositeId(@"composite-id", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCompositeId)o.@Item), false, false);
++ }
++ else if (o.@Item is global::NHibernate.Cfg.MappingSchema.HbmId) {
++ Write17_HbmId(@"id", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmId)o.@Item), false, false);
++ }
++ else if ((object)(o.@Item) != null){
++ throw CreateUnknownTypeException(o.@Item);
++ }
++ }
++ Write25_HbmDiscriminator(@"discriminator", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmDiscriminator)o.@discriminator), false, false);
++ Write70_HbmNaturalId(@"natural-id", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmNaturalId)o.@naturalid), false, false);
++ if ((object)(o.@Item1) != null){
++ if (o.@Item1 is global::NHibernate.Cfg.MappingSchema.HbmVersion) {
++ Write75_HbmVersion(@"version", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmVersion)o.@Item1), false, false);
++ }
++ else if (o.@Item1 is global::NHibernate.Cfg.MappingSchema.HbmTimestamp) {
++ Write74_HbmTimestamp(@"timestamp", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmTimestamp)o.@Item1), false, false);
++ }
++ else if ((object)(o.@Item1) != null){
++ throw CreateUnknownTypeException(o.@Item1);
++ }
++ }
++ {
++ global::System.Object[] a = (global::System.Object[])o.@Items;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ global::System.Object ai = (global::System.Object)a[ia];
++ if ((object)(ai) != null){
++ if (ai is global::NHibernate.Cfg.MappingSchema.HbmAny) {
++ Write36_HbmAny(@"any", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmAny)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmMap) {
++ Write58_HbmMap(@"map", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmMap)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmManyToOne) {
++ Write29_HbmManyToOne(@"many-to-one", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmManyToOne)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmPrimitiveArray) {
++ Write64_HbmPrimitiveArray(@"primitive-array", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmPrimitiveArray)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmSet) {
++ Write49_HbmSet(@"set", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmSet)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmProperty) {
++ Write34_HbmProperty(@"property", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmProperty)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmProperties) {
++ Write76_HbmProperties(@"properties", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmProperties)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmBag) {
++ Write50_HbmBag(@"bag", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmBag)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmArray) {
++ Write60_HbmArray(@"array", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmArray)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmOneToOne) {
++ Write61_HbmOneToOne(@"one-to-one", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmOneToOne)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmComponent) {
++ Write68_HbmComponent(@"component", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmComponent)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmList) {
++ Write67_HbmList(@"list", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmList)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmIdbag) {
++ Write66_HbmIdbag(@"idbag", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmIdbag)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmDynamicComponent) {
++ Write69_HbmDynamicComponent(@"dynamic-component", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmDynamicComponent)ai), false, false);
++ }
++ else if ((object)(ai) != null){
++ throw CreateUnknownTypeException(ai);
++ }
++ }
++ }
++ }
++ }
++ {
++ global::System.Object[] a = (global::System.Object[])o.@Items1;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ global::System.Object ai = (global::System.Object)a[ia];
++ if ((object)(ai) != null){
++ if (ai is global::NHibernate.Cfg.MappingSchema.HbmSubclass) {
++ Write94_HbmSubclass(@"subclass", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmSubclass)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmUnionSubclass) {
++ Write95_HbmUnionSubclass(@"union-subclass", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmUnionSubclass)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmJoin) {
++ Write78_HbmJoin(@"join", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmJoin)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmJoinedSubclass) {
++ Write93_HbmJoinedSubclass(@"joined-subclass", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmJoinedSubclass)ai), false, false);
++ }
++ else if ((object)(ai) != null){
++ throw CreateUnknownTypeException(ai);
++ }
++ }
++ }
++ }
++ }
++ Write44_HbmLoader(@"loader", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmLoader)o.@loader), false, false);
++ Write46_HbmCustomSQL(@"sql-insert", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCustomSQL)o.@sqlinsert), false, false);
++ Write46_HbmCustomSQL(@"sql-update", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCustomSQL)o.@sqlupdate), false, false);
++ Write46_HbmCustomSQL(@"sql-delete", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmCustomSQL)o.@sqldelete), false, false);
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmFilter[] a = (global::NHibernate.Cfg.MappingSchema.HbmFilter[])o.@filter;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write41_HbmFilter(@"filter", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmFilter)a[ia]), false, false);
++ }
++ }
++ }
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmResultSet[] a = (global::NHibernate.Cfg.MappingSchema.HbmResultSet[])o.@resultset;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write87_HbmResultSet(@"resultset", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmResultSet)a[ia]), false, false);
++ }
++ }
++ }
++ {
++ global::System.Object[] a = (global::System.Object[])o.@Items2;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ global::System.Object ai = (global::System.Object)a[ia];
++ if ((object)(ai) != null){
++ if (ai is global::NHibernate.Cfg.MappingSchema.HbmSqlQuery) {
++ Write92_HbmSqlQuery(@"sql-query", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmSqlQuery)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmQuery) {
++ Write91_HbmQuery(@"query", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmQuery)ai), false, false);
++ }
++ else if ((object)(ai) != null){
++ throw CreateUnknownTypeException(ai);
++ }
++ }
++ }
++ }
++ }
++ if (o.@lazySpecified) {
++ }
++ if (o.@abstractSpecified) {
++ }
++ if (o.@batchsizeSpecified) {
++ }
++ WriteEndElement(o);
++ }
++
++ void Write74_HbmTimestamp(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmTimestamp o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmTimestamp)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"name", @"", ((global::System.String)o.@name));
++ WriteAttribute(@"node", @"", ((global::System.String)o.@node));
++ WriteAttribute(@"column", @"", ((global::System.String)o.@column));
++ WriteAttribute(@"access", @"", ((global::System.String)o.@access));
++ if (o.@unsavedvalueSpecified) {
++ WriteAttribute(@"unsaved-value", @"", Write71_HbmTimestampUnsavedvalue(((global::NHibernate.Cfg.MappingSchema.HbmTimestampUnsavedvalue)o.@unsavedvalue)));
++ }
++ if (((global::NHibernate.Cfg.MappingSchema.HbmTimestampSource)o.@source) != global::NHibernate.Cfg.MappingSchema.HbmTimestampSource.@Vm) {
++ WriteAttribute(@"source", @"", Write72_HbmTimestampSource(((global::NHibernate.Cfg.MappingSchema.HbmTimestampSource)o.@source)));
++ }
++ if (((global::NHibernate.Cfg.MappingSchema.HbmVersionGeneration)o.@generated) != global::NHibernate.Cfg.MappingSchema.HbmVersionGeneration.@Never) {
++ WriteAttribute(@"generated", @"", Write73_HbmVersionGeneration(((global::NHibernate.Cfg.MappingSchema.HbmVersionGeneration)o.@generated)));
++ }
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmMeta[] a = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])o.@meta;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write4_HbmMeta(@"meta", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmMeta)a[ia]), false, false);
++ }
++ }
++ }
++ if (o.@unsavedvalueSpecified) {
++ }
++ WriteEndElement(o);
++ }
++
++ string Write73_HbmVersionGeneration(global::NHibernate.Cfg.MappingSchema.HbmVersionGeneration v) {
++ string s = null;
++ switch (v) {
++ case global::NHibernate.Cfg.MappingSchema.HbmVersionGeneration.@Never: s = @"never"; break;
++ case global::NHibernate.Cfg.MappingSchema.HbmVersionGeneration.@Always: s = @"always"; break;
++ default: throw CreateInvalidEnumValueException(((System.Int64)v).ToString(System.Globalization.CultureInfo.InvariantCulture), @"NHibernate.Cfg.MappingSchema.HbmVersionGeneration");
++ }
++ return s;
++ }
++
++ string Write72_HbmTimestampSource(global::NHibernate.Cfg.MappingSchema.HbmTimestampSource v) {
++ string s = null;
++ switch (v) {
++ case global::NHibernate.Cfg.MappingSchema.HbmTimestampSource.@Vm: s = @"vm"; break;
++ case global::NHibernate.Cfg.MappingSchema.HbmTimestampSource.@Db: s = @"db"; break;
++ default: throw CreateInvalidEnumValueException(((System.Int64)v).ToString(System.Globalization.CultureInfo.InvariantCulture), @"NHibernate.Cfg.MappingSchema.HbmTimestampSource");
++ }
++ return s;
++ }
++
++ string Write71_HbmTimestampUnsavedvalue(global::NHibernate.Cfg.MappingSchema.HbmTimestampUnsavedvalue v) {
++ string s = null;
++ switch (v) {
++ case global::NHibernate.Cfg.MappingSchema.HbmTimestampUnsavedvalue.@Null: s = @"null"; break;
++ case global::NHibernate.Cfg.MappingSchema.HbmTimestampUnsavedvalue.@Undefined: s = @"undefined"; break;
++ default: throw CreateInvalidEnumValueException(((System.Int64)v).ToString(System.Globalization.CultureInfo.InvariantCulture), @"NHibernate.Cfg.MappingSchema.HbmTimestampUnsavedvalue");
++ }
++ return s;
++ }
++
++ void Write75_HbmVersion(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmVersion o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmVersion)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"name", @"", ((global::System.String)o.@name));
++ WriteAttribute(@"node", @"", ((global::System.String)o.@node));
++ WriteAttribute(@"access", @"", ((global::System.String)o.@access));
++ WriteAttribute(@"column", @"", ((global::System.String)o.@column1));
++ if (((global::System.String)o.@type) != @"Int32") {
++ WriteAttribute(@"type", @"", ((global::System.String)o.@type));
++ }
++ WriteAttribute(@"unsaved-value", @"", ((global::System.String)o.@unsavedvalue));
++ if (((global::NHibernate.Cfg.MappingSchema.HbmVersionGeneration)o.@generated) != global::NHibernate.Cfg.MappingSchema.HbmVersionGeneration.@Never) {
++ WriteAttribute(@"generated", @"", Write73_HbmVersionGeneration(((global::NHibernate.Cfg.MappingSchema.HbmVersionGeneration)o.@generated)));
++ }
++ if (o.@insertSpecified) {
++ WriteAttribute(@"insert", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@insert)));
++ }
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmMeta[] a = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])o.@meta;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write4_HbmMeta(@"meta", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmMeta)a[ia]), false, false);
++ }
++ }
++ }
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmColumn[] a = (global::NHibernate.Cfg.MappingSchema.HbmColumn[])o.@column;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write13_HbmColumn(@"column", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmColumn)a[ia]), false, false);
++ }
++ }
++ }
++ if (o.@insertSpecified) {
++ }
++ WriteEndElement(o);
++ }
++
++ void Write70_HbmNaturalId(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmNaturalId o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmNaturalId)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ if (((global::System.Boolean)o.@mutable) != false) {
++ WriteAttribute(@"mutable", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@mutable)));
++ }
++ {
++ global::System.Object[] a = (global::System.Object[])o.@Items;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ global::System.Object ai = (global::System.Object)a[ia];
++ if ((object)(ai) != null){
++ if (ai is global::NHibernate.Cfg.MappingSchema.HbmComponent) {
++ Write68_HbmComponent(@"component", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmComponent)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmManyToOne) {
++ Write29_HbmManyToOne(@"many-to-one", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmManyToOne)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmProperty) {
++ Write34_HbmProperty(@"property", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmProperty)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmDynamicComponent) {
++ Write69_HbmDynamicComponent(@"dynamic-component", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmDynamicComponent)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmAny) {
++ Write36_HbmAny(@"any", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmAny)ai), false, false);
++ }
++ else if ((object)(ai) != null){
++ throw CreateUnknownTypeException(ai);
++ }
++ }
++ }
++ }
++ }
++ WriteEndElement(o);
++ }
++
++ void Write25_HbmDiscriminator(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmDiscriminator o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmDiscriminator)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"column", @"", ((global::System.String)o.@column));
++ WriteAttribute(@"formula", @"", ((global::System.String)o.@formula));
++ if (((global::System.String)o.@type) != @"string") {
++ WriteAttribute(@"type", @"", ((global::System.String)o.@type));
++ }
++ if (((global::System.Boolean)o.@notnull) != true) {
++ WriteAttribute(@"not-null", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@notnull)));
++ }
++ WriteAttribute(@"length", @"", ((global::System.String)o.@length));
++ if (((global::System.Boolean)o.@force) != false) {
++ WriteAttribute(@"force", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@force)));
++ }
++ if (((global::System.Boolean)o.@insert) != true) {
++ WriteAttribute(@"insert", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@insert)));
++ }
++ if ((object)(o.@Item) != null){
++ if (o.@Item is global::NHibernate.Cfg.MappingSchema.HbmColumn) {
++ Write13_HbmColumn(@"column", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmColumn)o.@Item), false, false);
++ }
++ else if (o.@Item is global::NHibernate.Cfg.MappingSchema.HbmFormula) {
++ Write24_HbmFormula(@"formula", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmFormula)o.@Item), false, false);
++ }
++ else if ((object)(o.@Item) != null){
++ throw CreateUnknownTypeException(o.@Item);
++ }
++ }
++ WriteEndElement(o);
++ }
++
++ void Write17_HbmId(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmId o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmId)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"name", @"", ((global::System.String)o.@name));
++ WriteAttribute(@"node", @"", ((global::System.String)o.@node));
++ WriteAttribute(@"access", @"", ((global::System.String)o.@access));
++ WriteAttribute(@"column", @"", ((global::System.String)o.@column1));
++ WriteAttribute(@"type", @"", ((global::System.String)o.@type1));
++ WriteAttribute(@"length", @"", ((global::System.String)o.@length));
++ WriteAttribute(@"unsaved-value", @"", ((global::System.String)o.@unsavedvalue));
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmMeta[] a = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])o.@meta;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write4_HbmMeta(@"meta", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmMeta)a[ia]), false, false);
++ }
++ }
++ }
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmColumn[] a = (global::NHibernate.Cfg.MappingSchema.HbmColumn[])o.@column;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write13_HbmColumn(@"column", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmColumn)a[ia]), false, false);
++ }
++ }
++ }
++ Write15_HbmType(@"type", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmType)o.@type), false, false);
++ Write16_HbmGenerator(@"generator", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmGenerator)o.@generator), false, false);
++ WriteEndElement(o);
++ }
++
++ void Write23_HbmCompositeId(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmCompositeId o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmCompositeId)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"class", @"", ((global::System.String)o.@class));
++ if (((global::System.Boolean)o.@mapped) != false) {
++ WriteAttribute(@"mapped", @"", System.Xml.XmlConvert.ToString((global::System.Boolean)((global::System.Boolean)o.@mapped)));
++ }
++ WriteAttribute(@"name", @"", ((global::System.String)o.@name));
++ WriteAttribute(@"node", @"", ((global::System.String)o.@node));
++ WriteAttribute(@"access", @"", ((global::System.String)o.@access));
++ if (((global::NHibernate.Cfg.MappingSchema.HbmUnsavedValueType)o.@unsavedvalue) != global::NHibernate.Cfg.MappingSchema.HbmUnsavedValueType.@Undefined) {
++ WriteAttribute(@"unsaved-value", @"", Write22_HbmUnsavedValueType(((global::NHibernate.Cfg.MappingSchema.HbmUnsavedValueType)o.@unsavedvalue)));
++ }
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmMeta[] a = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])o.@meta;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write4_HbmMeta(@"meta", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmMeta)a[ia]), false, false);
++ }
++ }
++ }
++ {
++ global::System.Object[] a = (global::System.Object[])o.@Items;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ global::System.Object ai = (global::System.Object)a[ia];
++ if ((object)(ai) != null){
++ if (ai is global::NHibernate.Cfg.MappingSchema.HbmKeyProperty) {
++ Write21_HbmKeyProperty(@"key-property", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmKeyProperty)ai), false, false);
++ }
++ else if (ai is global::NHibernate.Cfg.MappingSchema.HbmKeyManyToOne) {
++ Write20_HbmKeyManyToOne(@"key-many-to-one", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmKeyManyToOne)ai), false, false);
++ }
++ else if ((object)(ai) != null){
++ throw CreateUnknownTypeException(ai);
++ }
++ }
++ }
++ }
++ }
++ WriteEndElement(o);
++ }
++
++ string Write22_HbmUnsavedValueType(global::NHibernate.Cfg.MappingSchema.HbmUnsavedValueType v) {
++ string s = null;
++ switch (v) {
++ case global::NHibernate.Cfg.MappingSchema.HbmUnsavedValueType.@Undefined: s = @"undefined"; break;
++ case global::NHibernate.Cfg.MappingSchema.HbmUnsavedValueType.@Any: s = @"any"; break;
++ case global::NHibernate.Cfg.MappingSchema.HbmUnsavedValueType.@None: s = @"none"; break;
++ default: throw CreateInvalidEnumValueException(((System.Int64)v).ToString(System.Globalization.CultureInfo.InvariantCulture), @"NHibernate.Cfg.MappingSchema.HbmUnsavedValueType");
++ }
++ return s;
++ }
++
++ string Write97_HbmOptimisticLockMode(global::NHibernate.Cfg.MappingSchema.HbmOptimisticLockMode v) {
++ string s = null;
++ switch (v) {
++ case global::NHibernate.Cfg.MappingSchema.HbmOptimisticLockMode.@None: s = @"none"; break;
++ case global::NHibernate.Cfg.MappingSchema.HbmOptimisticLockMode.@Version: s = @"version"; break;
++ case global::NHibernate.Cfg.MappingSchema.HbmOptimisticLockMode.@Dirty: s = @"dirty"; break;
++ case global::NHibernate.Cfg.MappingSchema.HbmOptimisticLockMode.@All: s = @"all"; break;
++ default: throw CreateInvalidEnumValueException(((System.Int64)v).ToString(System.Globalization.CultureInfo.InvariantCulture), @"NHibernate.Cfg.MappingSchema.HbmOptimisticLockMode");
++ }
++ return s;
++ }
++
++ string Write96_HbmPolymorphismType(global::NHibernate.Cfg.MappingSchema.HbmPolymorphismType v) {
++ string s = null;
++ switch (v) {
++ case global::NHibernate.Cfg.MappingSchema.HbmPolymorphismType.@Implicit: s = @"implicit"; break;
++ case global::NHibernate.Cfg.MappingSchema.HbmPolymorphismType.@Explicit: s = @"explicit"; break;
++ default: throw CreateInvalidEnumValueException(((System.Int64)v).ToString(System.Globalization.CultureInfo.InvariantCulture), @"NHibernate.Cfg.MappingSchema.HbmPolymorphismType");
++ }
++ return s;
++ }
++
++ void Write100_HbmImport(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmImport o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmImport)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"class", @"", ((global::System.String)o.@class));
++ WriteAttribute(@"rename", @"", ((global::System.String)o.@rename));
++ WriteEndElement(o);
++ }
++
++ void Write99_HbmTypedef(string n, string ns, global::NHibernate.Cfg.MappingSchema.HbmTypedef o, bool isNullable, bool needType) {
++ if ((object)o == null) {
++ if (isNullable) WriteNullTagLiteral(n, ns);
++ return;
++ }
++ if (!needType) {
++ System.Type t = o.GetType();
++ if (t == typeof(global::NHibernate.Cfg.MappingSchema.HbmTypedef)) {
++ }
++ else {
++ throw CreateUnknownTypeException(o);
++ }
++ }
++ WriteStartElement(n, ns, o, false, null);
++ if (needType) WriteXsiType(null, @"urn:nhibernate-mapping-2.2");
++ WriteAttribute(@"class", @"", ((global::System.String)o.@class));
++ WriteAttribute(@"name", @"", ((global::System.String)o.@name));
++ {
++ global::NHibernate.Cfg.MappingSchema.HbmParam[] a = (global::NHibernate.Cfg.MappingSchema.HbmParam[])o.@param;
++ if (a != null) {
++ for (int ia = 0; ia < a.Length; ia++) {
++ Write14_HbmParam(@"param", @"urn:nhibernate-mapping-2.2", ((global::NHibernate.Cfg.MappingSchema.HbmParam)a[ia]), false, false);
++ }
++ }
++ }
++ WriteEndElement(o);
++ }
++
++ protected override void InitCallbacks() {
++ }
++ }
++
++ internal class XmlSerializationReader1 : System.Xml.Serialization.XmlSerializationReader {
++
++ public object Read109_class() {
++ object o = null;
++ Reader.MoveToContent();
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ if (((object) Reader.LocalName == (object)id1_class && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o = Read98_HbmClass(false, true);
++ }
++ else {
++ throw CreateUnknownNodeException();
++ }
++ }
++ else {
++ UnknownNode(null, @"urn:nhibernate-mapping-2.2:class");
++ }
++ return (object)o;
++ }
++
++ public object Read110_hibernatemapping() {
++ object o = null;
++ Reader.MoveToContent();
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ if (((object) Reader.LocalName == (object)id3_hibernatemapping && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o = Read108_HbmMapping(false, true);
++ }
++ else {
++ throw CreateUnknownNodeException();
++ }
++ }
++ else {
++ UnknownNode(null, @"urn:nhibernate-mapping-2.2:hibernate-mapping");
++ }
++ return (object)o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmMapping Read108_HbmMapping(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmMapping o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmMapping();
++ global::NHibernate.Cfg.MappingSchema.HbmMeta[] a_0 = null;
++ int ca_0 = 0;
++ global::NHibernate.Cfg.MappingSchema.HbmTypedef[] a_1 = null;
++ int ca_1 = 0;
++ global::NHibernate.Cfg.MappingSchema.HbmImport[] a_2 = null;
++ int ca_2 = 0;
++ global::System.Object[] a_3 = null;
++ int ca_3 = 0;
++ global::NHibernate.Cfg.MappingSchema.HbmResultSet[] a_4 = null;
++ int ca_4 = 0;
++ global::System.Object[] a_5 = null;
++ int ca_5 = 0;
++ global::NHibernate.Cfg.MappingSchema.HbmFilterDef[] a_6 = null;
++ int ca_6 = 0;
++ global::NHibernate.Cfg.MappingSchema.HbmDatabaseObject[] a_7 = null;
++ int ca_7 = 0;
++ bool[] paramsRead = new bool[16];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[8] && ((object) Reader.LocalName == (object)id5_schema && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@schema = Reader.Value;
++ paramsRead[8] = true;
++ }
++ else if (!paramsRead[9] && ((object) Reader.LocalName == (object)id6_catalog && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@catalog = Reader.Value;
++ paramsRead[9] = true;
++ }
++ else if (!paramsRead[10] && ((object) Reader.LocalName == (object)id7_defaultcascade && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@defaultcascade = Reader.Value;
++ paramsRead[10] = true;
++ }
++ else if (!paramsRead[11] && ((object) Reader.LocalName == (object)id8_defaultaccess && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@defaultaccess = Reader.Value;
++ paramsRead[11] = true;
++ }
++ else if (!paramsRead[12] && ((object) Reader.LocalName == (object)id9_defaultlazy && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@defaultlazy = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[12] = true;
++ }
++ else if (!paramsRead[13] && ((object) Reader.LocalName == (object)id10_autoimport && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@autoimport = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[13] = true;
++ }
++ else if (!paramsRead[14] && ((object) Reader.LocalName == (object)id11_namespace && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@namespace = Reader.Value;
++ paramsRead[14] = true;
++ }
++ else if (!paramsRead[15] && ((object) Reader.LocalName == (object)id12_assembly && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@assembly = Reader.Value;
++ paramsRead[15] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":schema, :catalog, :default-cascade, :default-access, :default-lazy, :auto-import, :namespace, :assembly");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@meta = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta), true);
++ o.@typedef = (global::NHibernate.Cfg.MappingSchema.HbmTypedef[])ShrinkArray(a_1, ca_1, typeof(global::NHibernate.Cfg.MappingSchema.HbmTypedef), true);
++ o.@import = (global::NHibernate.Cfg.MappingSchema.HbmImport[])ShrinkArray(a_2, ca_2, typeof(global::NHibernate.Cfg.MappingSchema.HbmImport), true);
++ o.@Items = (global::System.Object[])ShrinkArray(a_3, ca_3, typeof(global::System.Object), true);
++ o.@resultset = (global::NHibernate.Cfg.MappingSchema.HbmResultSet[])ShrinkArray(a_4, ca_4, typeof(global::NHibernate.Cfg.MappingSchema.HbmResultSet), true);
++ o.@Items1 = (global::System.Object[])ShrinkArray(a_5, ca_5, typeof(global::System.Object), true);
++ o.@filterdef = (global::NHibernate.Cfg.MappingSchema.HbmFilterDef[])ShrinkArray(a_6, ca_6, typeof(global::NHibernate.Cfg.MappingSchema.HbmFilterDef), true);
++ o.@databaseobject = (global::NHibernate.Cfg.MappingSchema.HbmDatabaseObject[])ShrinkArray(a_7, ca_7, typeof(global::NHibernate.Cfg.MappingSchema.HbmDatabaseObject), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations0 = 0;
++ int readerCount0 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ if (((object) Reader.LocalName == (object)id13_meta && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])EnsureArrayIndex(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta));a_0[ca_0++] = Read4_HbmMeta(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id14_typedef && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_1 = (global::NHibernate.Cfg.MappingSchema.HbmTypedef[])EnsureArrayIndex(a_1, ca_1, typeof(global::NHibernate.Cfg.MappingSchema.HbmTypedef));a_1[ca_1++] = Read99_HbmTypedef(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id15_import && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_2 = (global::NHibernate.Cfg.MappingSchema.HbmImport[])EnsureArrayIndex(a_2, ca_2, typeof(global::NHibernate.Cfg.MappingSchema.HbmImport));a_2[ca_2++] = Read100_HbmImport(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id16_unionsubclass && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_3 = (global::System.Object[])EnsureArrayIndex(a_3, ca_3, typeof(global::System.Object));a_3[ca_3++] = Read95_HbmUnionSubclass(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id17_subclass && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_3 = (global::System.Object[])EnsureArrayIndex(a_3, ca_3, typeof(global::System.Object));a_3[ca_3++] = Read94_HbmSubclass(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id1_class && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_3 = (global::System.Object[])EnsureArrayIndex(a_3, ca_3, typeof(global::System.Object));a_3[ca_3++] = Read98_HbmClass(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id18_joinedsubclass && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_3 = (global::System.Object[])EnsureArrayIndex(a_3, ca_3, typeof(global::System.Object));a_3[ca_3++] = Read93_HbmJoinedSubclass(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id19_resultset && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_4 = (global::NHibernate.Cfg.MappingSchema.HbmResultSet[])EnsureArrayIndex(a_4, ca_4, typeof(global::NHibernate.Cfg.MappingSchema.HbmResultSet));a_4[ca_4++] = Read87_HbmResultSet(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id20_sqlquery && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_5 = (global::System.Object[])EnsureArrayIndex(a_5, ca_5, typeof(global::System.Object));a_5[ca_5++] = Read92_HbmSqlQuery(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id21_query && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_5 = (global::System.Object[])EnsureArrayIndex(a_5, ca_5, typeof(global::System.Object));a_5[ca_5++] = Read91_HbmQuery(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id22_filterdef && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_6 = (global::NHibernate.Cfg.MappingSchema.HbmFilterDef[])EnsureArrayIndex(a_6, ca_6, typeof(global::NHibernate.Cfg.MappingSchema.HbmFilterDef));a_6[ca_6++] = Read102_HbmFilterDef(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id23_databaseobject && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_7 = (global::NHibernate.Cfg.MappingSchema.HbmDatabaseObject[])EnsureArrayIndex(a_7, ca_7, typeof(global::NHibernate.Cfg.MappingSchema.HbmDatabaseObject));a_7[ca_7++] = Read107_HbmDatabaseObject(false, true);
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:meta, urn:nhibernate-mapping-2.2:typedef, urn:nhibernate-mapping-2.2:import, urn:nhibernate-mapping-2.2:union-subclass, urn:nhibernate-mapping-2.2:subclass, urn:nhibernate-mapping-2.2:class, urn:nhibernate-mapping-2.2:joined-subclass, urn:nhibernate-mapping-2.2:resultset, urn:nhibernate-mapping-2.2:sql-query, urn:nhibernate-mapping-2.2:query, urn:nhibernate-mapping-2.2:filter-def, urn:nhibernate-mapping-2.2:database-object");
++ }
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:meta, urn:nhibernate-mapping-2.2:typedef, urn:nhibernate-mapping-2.2:import, urn:nhibernate-mapping-2.2:union-subclass, urn:nhibernate-mapping-2.2:subclass, urn:nhibernate-mapping-2.2:class, urn:nhibernate-mapping-2.2:joined-subclass, urn:nhibernate-mapping-2.2:resultset, urn:nhibernate-mapping-2.2:sql-query, urn:nhibernate-mapping-2.2:query, urn:nhibernate-mapping-2.2:filter-def, urn:nhibernate-mapping-2.2:database-object");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations0, ref readerCount0);
++ }
++ o.@meta = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta), true);
++ o.@typedef = (global::NHibernate.Cfg.MappingSchema.HbmTypedef[])ShrinkArray(a_1, ca_1, typeof(global::NHibernate.Cfg.MappingSchema.HbmTypedef), true);
++ o.@import = (global::NHibernate.Cfg.MappingSchema.HbmImport[])ShrinkArray(a_2, ca_2, typeof(global::NHibernate.Cfg.MappingSchema.HbmImport), true);
++ o.@Items = (global::System.Object[])ShrinkArray(a_3, ca_3, typeof(global::System.Object), true);
++ o.@resultset = (global::NHibernate.Cfg.MappingSchema.HbmResultSet[])ShrinkArray(a_4, ca_4, typeof(global::NHibernate.Cfg.MappingSchema.HbmResultSet), true);
++ o.@Items1 = (global::System.Object[])ShrinkArray(a_5, ca_5, typeof(global::System.Object), true);
++ o.@filterdef = (global::NHibernate.Cfg.MappingSchema.HbmFilterDef[])ShrinkArray(a_6, ca_6, typeof(global::NHibernate.Cfg.MappingSchema.HbmFilterDef), true);
++ o.@databaseobject = (global::NHibernate.Cfg.MappingSchema.HbmDatabaseObject[])ShrinkArray(a_7, ca_7, typeof(global::NHibernate.Cfg.MappingSchema.HbmDatabaseObject), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmDatabaseObject Read107_HbmDatabaseObject(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmDatabaseObject o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmDatabaseObject();
++ global::System.Object[] a_0 = null;
++ int ca_0 = 0;
++ global::NHibernate.Cfg.MappingSchema.HbmDialectScope[] a_1 = null;
++ int ca_1 = 0;
++ bool[] paramsRead = new bool[2];
++ while (Reader.MoveToNextAttribute()) {
++ if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o);
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@Items = (global::System.Object[])ShrinkArray(a_0, ca_0, typeof(global::System.Object), true);
++ o.@dialectscope = (global::NHibernate.Cfg.MappingSchema.HbmDialectScope[])ShrinkArray(a_1, ca_1, typeof(global::NHibernate.Cfg.MappingSchema.HbmDialectScope), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations1 = 0;
++ int readerCount1 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ if (((object) Reader.LocalName == (object)id24_create && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::System.Object[])EnsureArrayIndex(a_0, ca_0, typeof(global::System.Object));a_0[ca_0++] = Read103_HbmCreate(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id25_definition && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::System.Object[])EnsureArrayIndex(a_0, ca_0, typeof(global::System.Object));a_0[ca_0++] = Read104_HbmDefinition(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id26_drop && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::System.Object[])EnsureArrayIndex(a_0, ca_0, typeof(global::System.Object));a_0[ca_0++] = Read105_HbmDrop(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id27_dialectscope && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_1 = (global::NHibernate.Cfg.MappingSchema.HbmDialectScope[])EnsureArrayIndex(a_1, ca_1, typeof(global::NHibernate.Cfg.MappingSchema.HbmDialectScope));a_1[ca_1++] = Read106_HbmDialectScope(false, true);
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:create, urn:nhibernate-mapping-2.2:definition, urn:nhibernate-mapping-2.2:drop, urn:nhibernate-mapping-2.2:dialect-scope");
++ }
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:create, urn:nhibernate-mapping-2.2:definition, urn:nhibernate-mapping-2.2:drop, urn:nhibernate-mapping-2.2:dialect-scope");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations1, ref readerCount1);
++ }
++ o.@Items = (global::System.Object[])ShrinkArray(a_0, ca_0, typeof(global::System.Object), true);
++ o.@dialectscope = (global::NHibernate.Cfg.MappingSchema.HbmDialectScope[])ShrinkArray(a_1, ca_1, typeof(global::NHibernate.Cfg.MappingSchema.HbmDialectScope), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmDialectScope Read106_HbmDialectScope(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmDialectScope o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmDialectScope();
++ global::System.String[] a_1 = null;
++ int ca_1 = 0;
++ bool[] paramsRead = new bool[2];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[0] && ((object) Reader.LocalName == (object)id28_name && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@name = Reader.Value;
++ paramsRead[0] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":name");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@Text = (global::System.String[])ShrinkArray(a_1, ca_1, typeof(global::System.String), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations2 = 0;
++ int readerCount2 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ string tmp = null;
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ UnknownNode((object)o, @"");
++ }
++ else if (Reader.NodeType == System.Xml.XmlNodeType.Text ||
++ Reader.NodeType == System.Xml.XmlNodeType.CDATA ||
++ Reader.NodeType == System.Xml.XmlNodeType.Whitespace ||
++ Reader.NodeType == System.Xml.XmlNodeType.SignificantWhitespace) {
++ a_1 = (global::System.String[])EnsureArrayIndex(a_1, ca_1, typeof(global::System.String));a_1[ca_1++] = Reader.ReadString();
++ }
++ else {
++ UnknownNode((object)o, @"");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations2, ref readerCount2);
++ }
++ o.@Text = (global::System.String[])ShrinkArray(a_1, ca_1, typeof(global::System.String), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmDrop Read105_HbmDrop(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmDrop o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmDrop();
++ global::System.String[] a_0 = null;
++ int ca_0 = 0;
++ bool[] paramsRead = new bool[1];
++ while (Reader.MoveToNextAttribute()) {
++ if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o);
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@Text = (global::System.String[])ShrinkArray(a_0, ca_0, typeof(global::System.String), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations3 = 0;
++ int readerCount3 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ string tmp = null;
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ UnknownNode((object)o, @"");
++ }
++ else if (Reader.NodeType == System.Xml.XmlNodeType.Text ||
++ Reader.NodeType == System.Xml.XmlNodeType.CDATA ||
++ Reader.NodeType == System.Xml.XmlNodeType.Whitespace ||
++ Reader.NodeType == System.Xml.XmlNodeType.SignificantWhitespace) {
++ a_0 = (global::System.String[])EnsureArrayIndex(a_0, ca_0, typeof(global::System.String));a_0[ca_0++] = Reader.ReadString();
++ }
++ else {
++ UnknownNode((object)o, @"");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations3, ref readerCount3);
++ }
++ o.@Text = (global::System.String[])ShrinkArray(a_0, ca_0, typeof(global::System.String), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmDefinition Read104_HbmDefinition(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmDefinition o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmDefinition();
++ global::NHibernate.Cfg.MappingSchema.HbmParam[] a_0 = null;
++ int ca_0 = 0;
++ bool[] paramsRead = new bool[2];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[1] && ((object) Reader.LocalName == (object)id1_class && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@class = Reader.Value;
++ paramsRead[1] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":class");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@param = (global::NHibernate.Cfg.MappingSchema.HbmParam[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmParam), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations4 = 0;
++ int readerCount4 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ if (((object) Reader.LocalName == (object)id29_param && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::NHibernate.Cfg.MappingSchema.HbmParam[])EnsureArrayIndex(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmParam));a_0[ca_0++] = Read14_HbmParam(false, true);
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:param");
++ }
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:param");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations4, ref readerCount4);
++ }
++ o.@param = (global::NHibernate.Cfg.MappingSchema.HbmParam[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmParam), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmParam Read14_HbmParam(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmParam o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmParam();
++ global::System.String[] a_1 = null;
++ int ca_1 = 0;
++ bool[] paramsRead = new bool[2];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[0] && ((object) Reader.LocalName == (object)id28_name && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@name = Reader.Value;
++ paramsRead[0] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":name");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@Text = (global::System.String[])ShrinkArray(a_1, ca_1, typeof(global::System.String), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations5 = 0;
++ int readerCount5 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ string tmp = null;
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ UnknownNode((object)o, @"");
++ }
++ else if (Reader.NodeType == System.Xml.XmlNodeType.Text ||
++ Reader.NodeType == System.Xml.XmlNodeType.CDATA ||
++ Reader.NodeType == System.Xml.XmlNodeType.Whitespace ||
++ Reader.NodeType == System.Xml.XmlNodeType.SignificantWhitespace) {
++ a_1 = (global::System.String[])EnsureArrayIndex(a_1, ca_1, typeof(global::System.String));a_1[ca_1++] = Reader.ReadString();
++ }
++ else {
++ UnknownNode((object)o, @"");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations5, ref readerCount5);
++ }
++ o.@Text = (global::System.String[])ShrinkArray(a_1, ca_1, typeof(global::System.String), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmCreate Read103_HbmCreate(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmCreate o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmCreate();
++ global::System.String[] a_0 = null;
++ int ca_0 = 0;
++ bool[] paramsRead = new bool[1];
++ while (Reader.MoveToNextAttribute()) {
++ if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o);
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@Text = (global::System.String[])ShrinkArray(a_0, ca_0, typeof(global::System.String), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations6 = 0;
++ int readerCount6 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ string tmp = null;
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ UnknownNode((object)o, @"");
++ }
++ else if (Reader.NodeType == System.Xml.XmlNodeType.Text ||
++ Reader.NodeType == System.Xml.XmlNodeType.CDATA ||
++ Reader.NodeType == System.Xml.XmlNodeType.Whitespace ||
++ Reader.NodeType == System.Xml.XmlNodeType.SignificantWhitespace) {
++ a_0 = (global::System.String[])EnsureArrayIndex(a_0, ca_0, typeof(global::System.String));a_0[ca_0++] = Reader.ReadString();
++ }
++ else {
++ UnknownNode((object)o, @"");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations6, ref readerCount6);
++ }
++ o.@Text = (global::System.String[])ShrinkArray(a_0, ca_0, typeof(global::System.String), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmFilterDef Read102_HbmFilterDef(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmFilterDef o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmFilterDef();
++ global::NHibernate.Cfg.MappingSchema.HbmFilterParam[] a_0 = null;
++ int ca_0 = 0;
++ global::System.String[] a_1 = null;
++ int ca_1 = 0;
++ bool[] paramsRead = new bool[5];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[2] && ((object) Reader.LocalName == (object)id28_name && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@name = Reader.Value;
++ paramsRead[2] = true;
++ }
++ else if (!paramsRead[3] && ((object) Reader.LocalName == (object)id30_condition && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@condition = Reader.Value;
++ paramsRead[3] = true;
++ }
++ else if (!paramsRead[4] && ((object) Reader.LocalName == (object)id31_usemanytoone && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@usemanytoone = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[4] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":name, :condition, :use-many-to-one");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@Items = (global::NHibernate.Cfg.MappingSchema.HbmFilterParam[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmFilterParam), true);
++ o.@Text = (global::System.String[])ShrinkArray(a_1, ca_1, typeof(global::System.String), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations7 = 0;
++ int readerCount7 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ string tmp = null;
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ if (((object) Reader.LocalName == (object)id32_filterparam && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::NHibernate.Cfg.MappingSchema.HbmFilterParam[])EnsureArrayIndex(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmFilterParam));a_0[ca_0++] = Read101_HbmFilterParam(false, true);
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:filter-param");
++ }
++ }
++ else if (Reader.NodeType == System.Xml.XmlNodeType.Text ||
++ Reader.NodeType == System.Xml.XmlNodeType.CDATA ||
++ Reader.NodeType == System.Xml.XmlNodeType.Whitespace ||
++ Reader.NodeType == System.Xml.XmlNodeType.SignificantWhitespace) {
++ a_1 = (global::System.String[])EnsureArrayIndex(a_1, ca_1, typeof(global::System.String));a_1[ca_1++] = Reader.ReadString();
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:filter-param");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations7, ref readerCount7);
++ }
++ o.@Items = (global::NHibernate.Cfg.MappingSchema.HbmFilterParam[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmFilterParam), true);
++ o.@Text = (global::System.String[])ShrinkArray(a_1, ca_1, typeof(global::System.String), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmFilterParam Read101_HbmFilterParam(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmFilterParam o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmFilterParam();
++ bool[] paramsRead = new bool[2];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[0] && ((object) Reader.LocalName == (object)id28_name && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@name = Reader.Value;
++ paramsRead[0] = true;
++ }
++ else if (!paramsRead[1] && ((object) Reader.LocalName == (object)id33_type && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@type = Reader.Value;
++ paramsRead[1] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":name, :type");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations8 = 0;
++ int readerCount8 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ UnknownNode((object)o, @"");
++ }
++ else {
++ UnknownNode((object)o, @"");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations8, ref readerCount8);
++ }
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmQuery Read91_HbmQuery(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmQuery o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmQuery();
++ global::NHibernate.Cfg.MappingSchema.HbmQueryParam[] a_0 = null;
++ int ca_0 = 0;
++ global::System.String[] a_1 = null;
++ int ca_1 = 0;
++ bool[] paramsRead = new bool[11];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[2] && ((object) Reader.LocalName == (object)id28_name && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@name = Reader.Value;
++ paramsRead[2] = true;
++ }
++ else if (!paramsRead[3] && ((object) Reader.LocalName == (object)id34_flushmode && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@flushmode = Read89_HbmFlushMode(Reader.Value);
++ o.@flushmodeSpecified = true;
++ paramsRead[3] = true;
++ }
++ else if (!paramsRead[4] && ((object) Reader.LocalName == (object)id35_cacheable && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@cacheable = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[4] = true;
++ }
++ else if (!paramsRead[5] && ((object) Reader.LocalName == (object)id36_cacheregion && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@cacheregion = Reader.Value;
++ paramsRead[5] = true;
++ }
++ else if (!paramsRead[6] && ((object) Reader.LocalName == (object)id37_fetchsize && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@fetchsize = System.Xml.XmlConvert.ToInt32(Reader.Value);
++ o.@fetchsizeSpecified = true;
++ paramsRead[6] = true;
++ }
++ else if (!paramsRead[7] && ((object) Reader.LocalName == (object)id38_timeout && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@timeout = CollapseWhitespace(Reader.Value);
++ paramsRead[7] = true;
++ }
++ else if (!paramsRead[8] && ((object) Reader.LocalName == (object)id39_cachemode && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@cachemode = Read90_HbmCacheMode(Reader.Value);
++ o.@cachemodeSpecified = true;
++ paramsRead[8] = true;
++ }
++ else if (!paramsRead[9] && ((object) Reader.LocalName == (object)id40_readonly && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@readonly = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ o.@readonlySpecified = true;
++ paramsRead[9] = true;
++ }
++ else if (!paramsRead[10] && ((object) Reader.LocalName == (object)id41_comment && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@comment = Reader.Value;
++ paramsRead[10] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":name, :flush-mode, :cacheable, :cache-region, :fetch-size, :timeout, :cache-mode, :read-only, :comment");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@Items = (global::NHibernate.Cfg.MappingSchema.HbmQueryParam[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmQueryParam), true);
++ o.@Text = (global::System.String[])ShrinkArray(a_1, ca_1, typeof(global::System.String), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations9 = 0;
++ int readerCount9 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ string tmp = null;
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ if (((object) Reader.LocalName == (object)id42_queryparam && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::NHibernate.Cfg.MappingSchema.HbmQueryParam[])EnsureArrayIndex(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmQueryParam));a_0[ca_0++] = Read88_HbmQueryParam(false, true);
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:query-param");
++ }
++ }
++ else if (Reader.NodeType == System.Xml.XmlNodeType.Text ||
++ Reader.NodeType == System.Xml.XmlNodeType.CDATA ||
++ Reader.NodeType == System.Xml.XmlNodeType.Whitespace ||
++ Reader.NodeType == System.Xml.XmlNodeType.SignificantWhitespace) {
++ a_1 = (global::System.String[])EnsureArrayIndex(a_1, ca_1, typeof(global::System.String));a_1[ca_1++] = Reader.ReadString();
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:query-param");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations9, ref readerCount9);
++ }
++ o.@Items = (global::NHibernate.Cfg.MappingSchema.HbmQueryParam[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmQueryParam), true);
++ o.@Text = (global::System.String[])ShrinkArray(a_1, ca_1, typeof(global::System.String), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmQueryParam Read88_HbmQueryParam(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmQueryParam o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmQueryParam();
++ bool[] paramsRead = new bool[2];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[0] && ((object) Reader.LocalName == (object)id28_name && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@name = Reader.Value;
++ paramsRead[0] = true;
++ }
++ else if (!paramsRead[1] && ((object) Reader.LocalName == (object)id33_type && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@type = Reader.Value;
++ paramsRead[1] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":name, :type");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations10 = 0;
++ int readerCount10 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ UnknownNode((object)o, @"");
++ }
++ else {
++ UnknownNode((object)o, @"");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations10, ref readerCount10);
++ }
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmCacheMode Read90_HbmCacheMode(string s) {
++ switch (s) {
++ case @"get": return global::NHibernate.Cfg.MappingSchema.HbmCacheMode.@Get;
++ case @"ignore": return global::NHibernate.Cfg.MappingSchema.HbmCacheMode.@Ignore;
++ case @"normal": return global::NHibernate.Cfg.MappingSchema.HbmCacheMode.@Normal;
++ case @"put": return global::NHibernate.Cfg.MappingSchema.HbmCacheMode.@Put;
++ case @"refresh": return global::NHibernate.Cfg.MappingSchema.HbmCacheMode.@Refresh;
++ default: throw CreateUnknownConstantException(s, typeof(global::NHibernate.Cfg.MappingSchema.HbmCacheMode));
++ }
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmFlushMode Read89_HbmFlushMode(string s) {
++ switch (s) {
++ case @"auto": return global::NHibernate.Cfg.MappingSchema.HbmFlushMode.@Auto;
++ case @"never": return global::NHibernate.Cfg.MappingSchema.HbmFlushMode.@Never;
++ case @"always": return global::NHibernate.Cfg.MappingSchema.HbmFlushMode.@Always;
++ default: throw CreateUnknownConstantException(s, typeof(global::NHibernate.Cfg.MappingSchema.HbmFlushMode));
++ }
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmSqlQuery Read92_HbmSqlQuery(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmSqlQuery o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmSqlQuery();
++ global::System.Object[] a_0 = null;
++ int ca_0 = 0;
++ global::System.String[] a_1 = null;
++ int ca_1 = 0;
++ bool[] paramsRead = new bool[13];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[2] && ((object) Reader.LocalName == (object)id28_name && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@name = Reader.Value;
++ paramsRead[2] = true;
++ }
++ else if (!paramsRead[3] && ((object) Reader.LocalName == (object)id43_resultsetref && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@resultsetref = Reader.Value;
++ paramsRead[3] = true;
++ }
++ else if (!paramsRead[4] && ((object) Reader.LocalName == (object)id34_flushmode && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@flushmode = Read89_HbmFlushMode(Reader.Value);
++ o.@flushmodeSpecified = true;
++ paramsRead[4] = true;
++ }
++ else if (!paramsRead[5] && ((object) Reader.LocalName == (object)id35_cacheable && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@cacheable = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[5] = true;
++ }
++ else if (!paramsRead[6] && ((object) Reader.LocalName == (object)id36_cacheregion && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@cacheregion = Reader.Value;
++ paramsRead[6] = true;
++ }
++ else if (!paramsRead[7] && ((object) Reader.LocalName == (object)id37_fetchsize && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@fetchsize = System.Xml.XmlConvert.ToInt32(Reader.Value);
++ o.@fetchsizeSpecified = true;
++ paramsRead[7] = true;
++ }
++ else if (!paramsRead[8] && ((object) Reader.LocalName == (object)id38_timeout && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@timeout = CollapseWhitespace(Reader.Value);
++ paramsRead[8] = true;
++ }
++ else if (!paramsRead[9] && ((object) Reader.LocalName == (object)id39_cachemode && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@cachemode = Read90_HbmCacheMode(Reader.Value);
++ o.@cachemodeSpecified = true;
++ paramsRead[9] = true;
++ }
++ else if (!paramsRead[10] && ((object) Reader.LocalName == (object)id40_readonly && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@readonly = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ o.@readonlySpecified = true;
++ paramsRead[10] = true;
++ }
++ else if (!paramsRead[11] && ((object) Reader.LocalName == (object)id41_comment && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@comment = Reader.Value;
++ paramsRead[11] = true;
++ }
++ else if (!paramsRead[12] && ((object) Reader.LocalName == (object)id44_callable && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@callable = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[12] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":name, :resultset-ref, :flush-mode, :cacheable, :cache-region, :fetch-size, :timeout, :cache-mode, :read-only, :comment, :callable");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@Items = (global::System.Object[])ShrinkArray(a_0, ca_0, typeof(global::System.Object), true);
++ o.@Text = (global::System.String[])ShrinkArray(a_1, ca_1, typeof(global::System.String), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations11 = 0;
++ int readerCount11 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ string tmp = null;
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ if (((object) Reader.LocalName == (object)id45_returnjoin && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::System.Object[])EnsureArrayIndex(a_0, ca_0, typeof(global::System.Object));a_0[ca_0++] = Read85_HbmReturnJoin(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id46_return && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::System.Object[])EnsureArrayIndex(a_0, ca_0, typeof(global::System.Object));a_0[ca_0++] = Read83_HbmReturn(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id47_returnscalar && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::System.Object[])EnsureArrayIndex(a_0, ca_0, typeof(global::System.Object));a_0[ca_0++] = Read86_HbmReturnScalar(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id48_loadcollection && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::System.Object[])EnsureArrayIndex(a_0, ca_0, typeof(global::System.Object));a_0[ca_0++] = Read84_HbmLoadCollection(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id42_queryparam && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::System.Object[])EnsureArrayIndex(a_0, ca_0, typeof(global::System.Object));a_0[ca_0++] = Read88_HbmQueryParam(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id49_synchronize && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::System.Object[])EnsureArrayIndex(a_0, ca_0, typeof(global::System.Object));a_0[ca_0++] = Read9_HbmSynchronize(false, true);
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:return-join, urn:nhibernate-mapping-2.2:return, urn:nhibernate-mapping-2.2:return-scalar, urn:nhibernate-mapping-2.2:load-collection, urn:nhibernate-mapping-2.2:query-param, urn:nhibernate-mapping-2.2:synchronize");
++ }
++ }
++ else if (Reader.NodeType == System.Xml.XmlNodeType.Text ||
++ Reader.NodeType == System.Xml.XmlNodeType.CDATA ||
++ Reader.NodeType == System.Xml.XmlNodeType.Whitespace ||
++ Reader.NodeType == System.Xml.XmlNodeType.SignificantWhitespace) {
++ a_1 = (global::System.String[])EnsureArrayIndex(a_1, ca_1, typeof(global::System.String));a_1[ca_1++] = Reader.ReadString();
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:return-join, urn:nhibernate-mapping-2.2:return, urn:nhibernate-mapping-2.2:return-scalar, urn:nhibernate-mapping-2.2:load-collection, urn:nhibernate-mapping-2.2:query-param, urn:nhibernate-mapping-2.2:synchronize");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations11, ref readerCount11);
++ }
++ o.@Items = (global::System.Object[])ShrinkArray(a_0, ca_0, typeof(global::System.Object), true);
++ o.@Text = (global::System.String[])ShrinkArray(a_1, ca_1, typeof(global::System.String), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmSynchronize Read9_HbmSynchronize(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmSynchronize o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmSynchronize();
++ bool[] paramsRead = new bool[1];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[0] && ((object) Reader.LocalName == (object)id50_table && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@table = Reader.Value;
++ paramsRead[0] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":table");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations12 = 0;
++ int readerCount12 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ UnknownNode((object)o, @"");
++ }
++ else {
++ UnknownNode((object)o, @"");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations12, ref readerCount12);
++ }
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmLoadCollection Read84_HbmLoadCollection(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmLoadCollection o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmLoadCollection();
++ global::NHibernate.Cfg.MappingSchema.HbmReturnProperty[] a_0 = null;
++ int ca_0 = 0;
++ bool[] paramsRead = new bool[4];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[1] && ((object) Reader.LocalName == (object)id51_alias && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@alias = Reader.Value;
++ paramsRead[1] = true;
++ }
++ else if (!paramsRead[2] && ((object) Reader.LocalName == (object)id52_role && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@role = Reader.Value;
++ paramsRead[2] = true;
++ }
++ else if (!paramsRead[3] && ((object) Reader.LocalName == (object)id53_lockmode && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@lockmode = Read82_HbmLockMode(Reader.Value);
++ paramsRead[3] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":alias, :role, :lock-mode");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@returnproperty = (global::NHibernate.Cfg.MappingSchema.HbmReturnProperty[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmReturnProperty), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations13 = 0;
++ int readerCount13 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ if (((object) Reader.LocalName == (object)id54_returnproperty && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::NHibernate.Cfg.MappingSchema.HbmReturnProperty[])EnsureArrayIndex(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmReturnProperty));a_0[ca_0++] = Read81_HbmReturnProperty(false, true);
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:return-property");
++ }
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:return-property");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations13, ref readerCount13);
++ }
++ o.@returnproperty = (global::NHibernate.Cfg.MappingSchema.HbmReturnProperty[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmReturnProperty), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmReturnProperty Read81_HbmReturnProperty(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmReturnProperty o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmReturnProperty();
++ global::NHibernate.Cfg.MappingSchema.HbmReturnColumn[] a_0 = null;
++ int ca_0 = 0;
++ bool[] paramsRead = new bool[3];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[1] && ((object) Reader.LocalName == (object)id28_name && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@name = Reader.Value;
++ paramsRead[1] = true;
++ }
++ else if (!paramsRead[2] && ((object) Reader.LocalName == (object)id55_column && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@column = Reader.Value;
++ paramsRead[2] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":name, :column");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@returncolumn = (global::NHibernate.Cfg.MappingSchema.HbmReturnColumn[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmReturnColumn), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations14 = 0;
++ int readerCount14 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ if (((object) Reader.LocalName == (object)id56_returncolumn && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::NHibernate.Cfg.MappingSchema.HbmReturnColumn[])EnsureArrayIndex(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmReturnColumn));a_0[ca_0++] = Read80_HbmReturnColumn(false, true);
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:return-column");
++ }
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:return-column");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations14, ref readerCount14);
++ }
++ o.@returncolumn = (global::NHibernate.Cfg.MappingSchema.HbmReturnColumn[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmReturnColumn), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmReturnColumn Read80_HbmReturnColumn(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmReturnColumn o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmReturnColumn();
++ bool[] paramsRead = new bool[1];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[0] && ((object) Reader.LocalName == (object)id28_name && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@name = Reader.Value;
++ paramsRead[0] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":name");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations15 = 0;
++ int readerCount15 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ UnknownNode((object)o, @"");
++ }
++ else {
++ UnknownNode((object)o, @"");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations15, ref readerCount15);
++ }
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmLockMode Read82_HbmLockMode(string s) {
++ switch (s) {
++ case @"none": return global::NHibernate.Cfg.MappingSchema.HbmLockMode.@None;
++ case @"read": return global::NHibernate.Cfg.MappingSchema.HbmLockMode.@Read;
++ case @"upgrade": return global::NHibernate.Cfg.MappingSchema.HbmLockMode.@Upgrade;
++ case @"upgrade-nowait": return global::NHibernate.Cfg.MappingSchema.HbmLockMode.@UpgradeNowait;
++ case @"write": return global::NHibernate.Cfg.MappingSchema.HbmLockMode.@Write;
++ default: throw CreateUnknownConstantException(s, typeof(global::NHibernate.Cfg.MappingSchema.HbmLockMode));
++ }
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmReturnScalar Read86_HbmReturnScalar(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmReturnScalar o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmReturnScalar();
++ bool[] paramsRead = new bool[2];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[0] && ((object) Reader.LocalName == (object)id55_column && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@column = Reader.Value;
++ paramsRead[0] = true;
++ }
++ else if (!paramsRead[1] && ((object) Reader.LocalName == (object)id33_type && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@type = Reader.Value;
++ paramsRead[1] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":column, :type");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations16 = 0;
++ int readerCount16 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ UnknownNode((object)o, @"");
++ }
++ else {
++ UnknownNode((object)o, @"");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations16, ref readerCount16);
++ }
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmReturn Read83_HbmReturn(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmReturn o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmReturn();
++ global::NHibernate.Cfg.MappingSchema.HbmReturnProperty[] a_1 = null;
++ int ca_1 = 0;
++ bool[] paramsRead = new bool[6];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[2] && ((object) Reader.LocalName == (object)id51_alias && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@alias = Reader.Value;
++ paramsRead[2] = true;
++ }
++ else if (!paramsRead[3] && ((object) Reader.LocalName == (object)id57_entityname && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@entityname = Reader.Value;
++ paramsRead[3] = true;
++ }
++ else if (!paramsRead[4] && ((object) Reader.LocalName == (object)id1_class && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@class = Reader.Value;
++ paramsRead[4] = true;
++ }
++ else if (!paramsRead[5] && ((object) Reader.LocalName == (object)id53_lockmode && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@lockmode = Read82_HbmLockMode(Reader.Value);
++ paramsRead[5] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":alias, :entity-name, :class, :lock-mode");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@returnproperty = (global::NHibernate.Cfg.MappingSchema.HbmReturnProperty[])ShrinkArray(a_1, ca_1, typeof(global::NHibernate.Cfg.MappingSchema.HbmReturnProperty), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations17 = 0;
++ int readerCount17 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ if (!paramsRead[0] && ((object) Reader.LocalName == (object)id58_returndiscriminator && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@returndiscriminator = Read79_HbmReturnDiscriminator(false, true);
++ paramsRead[0] = true;
++ }
++ else if (((object) Reader.LocalName == (object)id54_returnproperty && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_1 = (global::NHibernate.Cfg.MappingSchema.HbmReturnProperty[])EnsureArrayIndex(a_1, ca_1, typeof(global::NHibernate.Cfg.MappingSchema.HbmReturnProperty));a_1[ca_1++] = Read81_HbmReturnProperty(false, true);
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:return-discriminator, urn:nhibernate-mapping-2.2:return-property");
++ }
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:return-discriminator, urn:nhibernate-mapping-2.2:return-property");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations17, ref readerCount17);
++ }
++ o.@returnproperty = (global::NHibernate.Cfg.MappingSchema.HbmReturnProperty[])ShrinkArray(a_1, ca_1, typeof(global::NHibernate.Cfg.MappingSchema.HbmReturnProperty), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmReturnDiscriminator Read79_HbmReturnDiscriminator(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmReturnDiscriminator o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmReturnDiscriminator();
++ bool[] paramsRead = new bool[1];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[0] && ((object) Reader.LocalName == (object)id55_column && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@column = Reader.Value;
++ paramsRead[0] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":column");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations18 = 0;
++ int readerCount18 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ UnknownNode((object)o, @"");
++ }
++ else {
++ UnknownNode((object)o, @"");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations18, ref readerCount18);
++ }
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmReturnJoin Read85_HbmReturnJoin(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmReturnJoin o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmReturnJoin();
++ global::NHibernate.Cfg.MappingSchema.HbmReturnProperty[] a_0 = null;
++ int ca_0 = 0;
++ bool[] paramsRead = new bool[4];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[1] && ((object) Reader.LocalName == (object)id51_alias && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@alias = Reader.Value;
++ paramsRead[1] = true;
++ }
++ else if (!paramsRead[2] && ((object) Reader.LocalName == (object)id59_property && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@property = Reader.Value;
++ paramsRead[2] = true;
++ }
++ else if (!paramsRead[3] && ((object) Reader.LocalName == (object)id53_lockmode && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@lockmode = Read82_HbmLockMode(Reader.Value);
++ paramsRead[3] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":alias, :property, :lock-mode");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@returnproperty = (global::NHibernate.Cfg.MappingSchema.HbmReturnProperty[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmReturnProperty), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations19 = 0;
++ int readerCount19 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ if (((object) Reader.LocalName == (object)id54_returnproperty && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::NHibernate.Cfg.MappingSchema.HbmReturnProperty[])EnsureArrayIndex(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmReturnProperty));a_0[ca_0++] = Read81_HbmReturnProperty(false, true);
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:return-property");
++ }
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:return-property");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations19, ref readerCount19);
++ }
++ o.@returnproperty = (global::NHibernate.Cfg.MappingSchema.HbmReturnProperty[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmReturnProperty), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmResultSet Read87_HbmResultSet(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmResultSet o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmResultSet();
++ global::System.Object[] a_0 = null;
++ int ca_0 = 0;
++ bool[] paramsRead = new bool[2];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[1] && ((object) Reader.LocalName == (object)id28_name && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@name = Reader.Value;
++ paramsRead[1] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":name");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@Items = (global::System.Object[])ShrinkArray(a_0, ca_0, typeof(global::System.Object), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations20 = 0;
++ int readerCount20 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ if (((object) Reader.LocalName == (object)id46_return && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::System.Object[])EnsureArrayIndex(a_0, ca_0, typeof(global::System.Object));a_0[ca_0++] = Read83_HbmReturn(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id48_loadcollection && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::System.Object[])EnsureArrayIndex(a_0, ca_0, typeof(global::System.Object));a_0[ca_0++] = Read84_HbmLoadCollection(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id45_returnjoin && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::System.Object[])EnsureArrayIndex(a_0, ca_0, typeof(global::System.Object));a_0[ca_0++] = Read85_HbmReturnJoin(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id47_returnscalar && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::System.Object[])EnsureArrayIndex(a_0, ca_0, typeof(global::System.Object));a_0[ca_0++] = Read86_HbmReturnScalar(false, true);
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:return, urn:nhibernate-mapping-2.2:load-collection, urn:nhibernate-mapping-2.2:return-join, urn:nhibernate-mapping-2.2:return-scalar");
++ }
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:return, urn:nhibernate-mapping-2.2:load-collection, urn:nhibernate-mapping-2.2:return-join, urn:nhibernate-mapping-2.2:return-scalar");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations20, ref readerCount20);
++ }
++ o.@Items = (global::System.Object[])ShrinkArray(a_0, ca_0, typeof(global::System.Object), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmJoinedSubclass Read93_HbmJoinedSubclass(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmJoinedSubclass o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmJoinedSubclass();
++ global::NHibernate.Cfg.MappingSchema.HbmMeta[] a_0 = null;
++ int ca_0 = 0;
++ global::NHibernate.Cfg.MappingSchema.HbmSynchronize[] a_2 = null;
++ int ca_2 = 0;
++ global::NHibernate.Cfg.MappingSchema.HbmTuplizer[] a_4 = null;
++ int ca_4 = 0;
++ global::System.Object[] a_6 = null;
++ int ca_6 = 0;
++ global::NHibernate.Cfg.MappingSchema.HbmJoinedSubclass[] a_7 = null;
++ int ca_7 = 0;
++ global::NHibernate.Cfg.MappingSchema.HbmResultSet[] a_12 = null;
++ int ca_12 = 0;
++ global::System.Object[] a_13 = null;
++ int ca_13 = 0;
++ bool[] paramsRead = new bool[31];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[14] && ((object) Reader.LocalName == (object)id57_entityname && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@entityname = Reader.Value;
++ paramsRead[14] = true;
++ }
++ else if (!paramsRead[15] && ((object) Reader.LocalName == (object)id28_name && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@name = Reader.Value;
++ paramsRead[15] = true;
++ }
++ else if (!paramsRead[16] && ((object) Reader.LocalName == (object)id60_proxy && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@proxy = Reader.Value;
++ paramsRead[16] = true;
++ }
++ else if (!paramsRead[17] && ((object) Reader.LocalName == (object)id50_table && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@table = Reader.Value;
++ paramsRead[17] = true;
++ }
++ else if (!paramsRead[18] && ((object) Reader.LocalName == (object)id5_schema && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@schema = Reader.Value;
++ paramsRead[18] = true;
++ }
++ else if (!paramsRead[19] && ((object) Reader.LocalName == (object)id6_catalog && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@catalog = Reader.Value;
++ paramsRead[19] = true;
++ }
++ else if (!paramsRead[20] && ((object) Reader.LocalName == (object)id61_subselect && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@subselect1 = Reader.Value;
++ paramsRead[20] = true;
++ }
++ else if (!paramsRead[21] && ((object) Reader.LocalName == (object)id62_dynamicupdate && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@dynamicupdate = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[21] = true;
++ }
++ else if (!paramsRead[22] && ((object) Reader.LocalName == (object)id63_dynamicinsert && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@dynamicinsert = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[22] = true;
++ }
++ else if (!paramsRead[23] && ((object) Reader.LocalName == (object)id64_selectbeforeupdate && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@selectbeforeupdate = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[23] = true;
++ }
++ else if (!paramsRead[24] && ((object) Reader.LocalName == (object)id65_extends && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@extends = Reader.Value;
++ paramsRead[24] = true;
++ }
++ else if (!paramsRead[25] && ((object) Reader.LocalName == (object)id66_lazy && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@lazy = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ o.@lazySpecified = true;
++ paramsRead[25] = true;
++ }
++ else if (!paramsRead[26] && ((object) Reader.LocalName == (object)id67_abstract && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@abstract = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ o.@abstractSpecified = true;
++ paramsRead[26] = true;
++ }
++ else if (!paramsRead[27] && ((object) Reader.LocalName == (object)id68_persister && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@persister = Reader.Value;
++ paramsRead[27] = true;
++ }
++ else if (!paramsRead[28] && ((object) Reader.LocalName == (object)id69_check && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@check = Reader.Value;
++ paramsRead[28] = true;
++ }
++ else if (!paramsRead[29] && ((object) Reader.LocalName == (object)id70_batchsize && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@batchsize = CollapseWhitespace(Reader.Value);
++ paramsRead[29] = true;
++ }
++ else if (!paramsRead[30] && ((object) Reader.LocalName == (object)id71_node && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@node = Reader.Value;
++ paramsRead[30] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":entity-name, :name, :proxy, :table, :schema, :catalog, :subselect, :dynamic-update, :dynamic-insert, :select-before-update, :extends, :lazy, :abstract, :persister, :check, :batch-size, :node");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@meta = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta), true);
++ o.@synchronize = (global::NHibernate.Cfg.MappingSchema.HbmSynchronize[])ShrinkArray(a_2, ca_2, typeof(global::NHibernate.Cfg.MappingSchema.HbmSynchronize), true);
++ o.@tuplizer = (global::NHibernate.Cfg.MappingSchema.HbmTuplizer[])ShrinkArray(a_4, ca_4, typeof(global::NHibernate.Cfg.MappingSchema.HbmTuplizer), true);
++ o.@Items = (global::System.Object[])ShrinkArray(a_6, ca_6, typeof(global::System.Object), true);
++ o.@joinedsubclass1 = (global::NHibernate.Cfg.MappingSchema.HbmJoinedSubclass[])ShrinkArray(a_7, ca_7, typeof(global::NHibernate.Cfg.MappingSchema.HbmJoinedSubclass), true);
++ o.@resultset = (global::NHibernate.Cfg.MappingSchema.HbmResultSet[])ShrinkArray(a_12, ca_12, typeof(global::NHibernate.Cfg.MappingSchema.HbmResultSet), true);
++ o.@Items1 = (global::System.Object[])ShrinkArray(a_13, ca_13, typeof(global::System.Object), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations21 = 0;
++ int readerCount21 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ if (((object) Reader.LocalName == (object)id13_meta && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])EnsureArrayIndex(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta));a_0[ca_0++] = Read4_HbmMeta(false, true);
++ }
++ else if (!paramsRead[1] && ((object) Reader.LocalName == (object)id61_subselect && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@subselect = Read5_HbmSubselect(false, true);
++ paramsRead[1] = true;
++ }
++ else if (((object) Reader.LocalName == (object)id49_synchronize && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_2 = (global::NHibernate.Cfg.MappingSchema.HbmSynchronize[])EnsureArrayIndex(a_2, ca_2, typeof(global::NHibernate.Cfg.MappingSchema.HbmSynchronize));a_2[ca_2++] = Read9_HbmSynchronize(false, true);
++ }
++ else if (!paramsRead[3] && ((object) Reader.LocalName == (object)id41_comment && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@comment = Read10_HbmComment(false, true);
++ paramsRead[3] = true;
++ }
++ else if (((object) Reader.LocalName == (object)id72_tuplizer && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_4 = (global::NHibernate.Cfg.MappingSchema.HbmTuplizer[])EnsureArrayIndex(a_4, ca_4, typeof(global::NHibernate.Cfg.MappingSchema.HbmTuplizer));a_4[ca_4++] = Read12_HbmTuplizer(false, true);
++ }
++ else if (!paramsRead[5] && ((object) Reader.LocalName == (object)id73_key && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@key = Read31_HbmKey(false, true);
++ paramsRead[5] = true;
++ }
++ else if (((object) Reader.LocalName == (object)id74_map && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_6 = (global::System.Object[])EnsureArrayIndex(a_6, ca_6, typeof(global::System.Object));a_6[ca_6++] = Read58_HbmMap(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id75_dynamiccomponent && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_6 = (global::System.Object[])EnsureArrayIndex(a_6, ca_6, typeof(global::System.Object));a_6[ca_6++] = Read69_HbmDynamicComponent(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id76_list && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_6 = (global::System.Object[])EnsureArrayIndex(a_6, ca_6, typeof(global::System.Object));a_6[ca_6++] = Read67_HbmList(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id77_component && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_6 = (global::System.Object[])EnsureArrayIndex(a_6, ca_6, typeof(global::System.Object));a_6[ca_6++] = Read68_HbmComponent(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id78_manytoone && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_6 = (global::System.Object[])EnsureArrayIndex(a_6, ca_6, typeof(global::System.Object));a_6[ca_6++] = Read29_HbmManyToOne(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id79_properties && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_6 = (global::System.Object[])EnsureArrayIndex(a_6, ca_6, typeof(global::System.Object));a_6[ca_6++] = Read76_HbmProperties(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id80_onetoone && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_6 = (global::System.Object[])EnsureArrayIndex(a_6, ca_6, typeof(global::System.Object));a_6[ca_6++] = Read61_HbmOneToOne(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id59_property && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_6 = (global::System.Object[])EnsureArrayIndex(a_6, ca_6, typeof(global::System.Object));a_6[ca_6++] = Read34_HbmProperty(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id81_set && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_6 = (global::System.Object[])EnsureArrayIndex(a_6, ca_6, typeof(global::System.Object));a_6[ca_6++] = Read49_HbmSet(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id82_primitivearray && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_6 = (global::System.Object[])EnsureArrayIndex(a_6, ca_6, typeof(global::System.Object));a_6[ca_6++] = Read64_HbmPrimitiveArray(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id83_idbag && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_6 = (global::System.Object[])EnsureArrayIndex(a_6, ca_6, typeof(global::System.Object));a_6[ca_6++] = Read66_HbmIdbag(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id84_any && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_6 = (global::System.Object[])EnsureArrayIndex(a_6, ca_6, typeof(global::System.Object));a_6[ca_6++] = Read36_HbmAny(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id85_array && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_6 = (global::System.Object[])EnsureArrayIndex(a_6, ca_6, typeof(global::System.Object));a_6[ca_6++] = Read60_HbmArray(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id86_bag && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_6 = (global::System.Object[])EnsureArrayIndex(a_6, ca_6, typeof(global::System.Object));a_6[ca_6++] = Read50_HbmBag(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id18_joinedsubclass && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_7 = (global::NHibernate.Cfg.MappingSchema.HbmJoinedSubclass[])EnsureArrayIndex(a_7, ca_7, typeof(global::NHibernate.Cfg.MappingSchema.HbmJoinedSubclass));a_7[ca_7++] = Read93_HbmJoinedSubclass(false, true);
++ }
++ else if (!paramsRead[8] && ((object) Reader.LocalName == (object)id87_loader && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@loader = Read44_HbmLoader(false, true);
++ paramsRead[8] = true;
++ }
++ else if (!paramsRead[9] && ((object) Reader.LocalName == (object)id88_sqlinsert && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@sqlinsert = Read46_HbmCustomSQL(false, true);
++ paramsRead[9] = true;
++ }
++ else if (!paramsRead[10] && ((object) Reader.LocalName == (object)id89_sqlupdate && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@sqlupdate = Read46_HbmCustomSQL(false, true);
++ paramsRead[10] = true;
++ }
++ else if (!paramsRead[11] && ((object) Reader.LocalName == (object)id90_sqldelete && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@sqldelete = Read46_HbmCustomSQL(false, true);
++ paramsRead[11] = true;
++ }
++ else if (((object) Reader.LocalName == (object)id19_resultset && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_12 = (global::NHibernate.Cfg.MappingSchema.HbmResultSet[])EnsureArrayIndex(a_12, ca_12, typeof(global::NHibernate.Cfg.MappingSchema.HbmResultSet));a_12[ca_12++] = Read87_HbmResultSet(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id21_query && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_13 = (global::System.Object[])EnsureArrayIndex(a_13, ca_13, typeof(global::System.Object));a_13[ca_13++] = Read91_HbmQuery(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id20_sqlquery && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_13 = (global::System.Object[])EnsureArrayIndex(a_13, ca_13, typeof(global::System.Object));a_13[ca_13++] = Read92_HbmSqlQuery(false, true);
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:meta, urn:nhibernate-mapping-2.2:subselect, urn:nhibernate-mapping-2.2:synchronize, urn:nhibernate-mapping-2.2:comment, urn:nhibernate-mapping-2.2:tuplizer, urn:nhibernate-mapping-2.2:key, urn:nhibernate-mapping-2.2:map, urn:nhibernate-mapping-2.2:dynamic-component, urn:nhibernate-mapping-2.2:list, urn:nhibernate-mapping-2.2:component, urn:nhibernate-mapping-2.2:many-to-one, urn:nhibernate-mapping-2.2:properties, urn:nhibernate-mapping-2.2:one-to-one, urn:nhibernate-mapping-2.2:property, urn:nhibernate-mapping-2.2:set, urn:nhibernate-mapping-2.2:primitive-array, urn:nhibernate-mapping-2.2:idbag, urn:nhibernate-mapping-2.2:any, urn:nhibernate-mapping-2.2:array, urn:nhibernate-mapping-2.2:bag, urn:nhibernate-mapping-2.2:joined-subclass, urn:nhibernate-mapping-2.2:loader, urn:nhibernate-mapping-2.2:sql-insert, urn:nhibernate-mapping-2.2:sql-update, urn:nhibernate-mapping-2.2:sql-delete, urn:nhibernate-mapping-2.2:resultset, urn:nhibernate-mapping-2.2:query, urn:nhibernate-mapping-2.2:sql-query");
++ }
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:meta, urn:nhibernate-mapping-2.2:subselect, urn:nhibernate-mapping-2.2:synchronize, urn:nhibernate-mapping-2.2:comment, urn:nhibernate-mapping-2.2:tuplizer, urn:nhibernate-mapping-2.2:key, urn:nhibernate-mapping-2.2:map, urn:nhibernate-mapping-2.2:dynamic-component, urn:nhibernate-mapping-2.2:list, urn:nhibernate-mapping-2.2:component, urn:nhibernate-mapping-2.2:many-to-one, urn:nhibernate-mapping-2.2:properties, urn:nhibernate-mapping-2.2:one-to-one, urn:nhibernate-mapping-2.2:property, urn:nhibernate-mapping-2.2:set, urn:nhibernate-mapping-2.2:primitive-array, urn:nhibernate-mapping-2.2:idbag, urn:nhibernate-mapping-2.2:any, urn:nhibernate-mapping-2.2:array, urn:nhibernate-mapping-2.2:bag, urn:nhibernate-mapping-2.2:joined-subclass, urn:nhibernate-mapping-2.2:loader, urn:nhibernate-mapping-2.2:sql-insert, urn:nhibernate-mapping-2.2:sql-update, urn:nhibernate-mapping-2.2:sql-delete, urn:nhibernate-mapping-2.2:resultset, urn:nhibernate-mapping-2.2:query, urn:nhibernate-mapping-2.2:sql-query");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations21, ref readerCount21);
++ }
++ o.@meta = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta), true);
++ o.@synchronize = (global::NHibernate.Cfg.MappingSchema.HbmSynchronize[])ShrinkArray(a_2, ca_2, typeof(global::NHibernate.Cfg.MappingSchema.HbmSynchronize), true);
++ o.@tuplizer = (global::NHibernate.Cfg.MappingSchema.HbmTuplizer[])ShrinkArray(a_4, ca_4, typeof(global::NHibernate.Cfg.MappingSchema.HbmTuplizer), true);
++ o.@Items = (global::System.Object[])ShrinkArray(a_6, ca_6, typeof(global::System.Object), true);
++ o.@joinedsubclass1 = (global::NHibernate.Cfg.MappingSchema.HbmJoinedSubclass[])ShrinkArray(a_7, ca_7, typeof(global::NHibernate.Cfg.MappingSchema.HbmJoinedSubclass), true);
++ o.@resultset = (global::NHibernate.Cfg.MappingSchema.HbmResultSet[])ShrinkArray(a_12, ca_12, typeof(global::NHibernate.Cfg.MappingSchema.HbmResultSet), true);
++ o.@Items1 = (global::System.Object[])ShrinkArray(a_13, ca_13, typeof(global::System.Object), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmCustomSQL Read46_HbmCustomSQL(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id91_HbmCustomSQL && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmCustomSQL o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmCustomSQL();
++ global::System.String[] a_2 = null;
++ int ca_2 = 0;
++ bool[] paramsRead = new bool[3];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[0] && ((object) Reader.LocalName == (object)id44_callable && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@callable = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ o.@callableSpecified = true;
++ paramsRead[0] = true;
++ }
++ else if (!paramsRead[1] && ((object) Reader.LocalName == (object)id69_check && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@check = Read45_HbmCustomSQLCheck(Reader.Value);
++ o.@checkSpecified = true;
++ paramsRead[1] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":callable, :check");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@Text = (global::System.String[])ShrinkArray(a_2, ca_2, typeof(global::System.String), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations22 = 0;
++ int readerCount22 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ string tmp = null;
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ UnknownNode((object)o, @"");
++ }
++ else if (Reader.NodeType == System.Xml.XmlNodeType.Text ||
++ Reader.NodeType == System.Xml.XmlNodeType.CDATA ||
++ Reader.NodeType == System.Xml.XmlNodeType.Whitespace ||
++ Reader.NodeType == System.Xml.XmlNodeType.SignificantWhitespace) {
++ a_2 = (global::System.String[])EnsureArrayIndex(a_2, ca_2, typeof(global::System.String));a_2[ca_2++] = Reader.ReadString();
++ }
++ else {
++ UnknownNode((object)o, @"");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations22, ref readerCount22);
++ }
++ o.@Text = (global::System.String[])ShrinkArray(a_2, ca_2, typeof(global::System.String), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmCustomSQLCheck Read45_HbmCustomSQLCheck(string s) {
++ switch (s) {
++ case @"none": return global::NHibernate.Cfg.MappingSchema.HbmCustomSQLCheck.@None;
++ case @"rowcount": return global::NHibernate.Cfg.MappingSchema.HbmCustomSQLCheck.@Rowcount;
++ case @"param": return global::NHibernate.Cfg.MappingSchema.HbmCustomSQLCheck.@Param;
++ default: throw CreateUnknownConstantException(s, typeof(global::NHibernate.Cfg.MappingSchema.HbmCustomSQLCheck));
++ }
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmLoader Read44_HbmLoader(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmLoader o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmLoader();
++ bool[] paramsRead = new bool[1];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[0] && ((object) Reader.LocalName == (object)id92_queryref && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@queryref = Reader.Value;
++ paramsRead[0] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":query-ref");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations23 = 0;
++ int readerCount23 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ UnknownNode((object)o, @"");
++ }
++ else {
++ UnknownNode((object)o, @"");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations23, ref readerCount23);
++ }
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmBag Read50_HbmBag(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmBag o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmBag();
++ global::NHibernate.Cfg.MappingSchema.HbmMeta[] a_0 = null;
++ int ca_0 = 0;
++ global::NHibernate.Cfg.MappingSchema.HbmSynchronize[] a_3 = null;
++ int ca_3 = 0;
++ global::NHibernate.Cfg.MappingSchema.HbmFilter[] a_12 = null;
++ int ca_12 = 0;
++ bool[] paramsRead = new bool[35];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[13] && ((object) Reader.LocalName == (object)id28_name && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@name = Reader.Value;
++ paramsRead[13] = true;
++ }
++ else if (!paramsRead[14] && ((object) Reader.LocalName == (object)id93_access && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@access = Reader.Value;
++ paramsRead[14] = true;
++ }
++ else if (!paramsRead[15] && ((object) Reader.LocalName == (object)id50_table && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@table = Reader.Value;
++ paramsRead[15] = true;
++ }
++ else if (!paramsRead[16] && ((object) Reader.LocalName == (object)id5_schema && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@schema = Reader.Value;
++ paramsRead[16] = true;
++ }
++ else if (!paramsRead[17] && ((object) Reader.LocalName == (object)id6_catalog && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@catalog = Reader.Value;
++ paramsRead[17] = true;
++ }
++ else if (!paramsRead[18] && ((object) Reader.LocalName == (object)id61_subselect && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@subselect1 = Reader.Value;
++ paramsRead[18] = true;
++ }
++ else if (!paramsRead[19] && ((object) Reader.LocalName == (object)id66_lazy && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@lazy = Read47_HbmCollectionLazy(Reader.Value);
++ o.@lazySpecified = true;
++ paramsRead[19] = true;
++ }
++ else if (!paramsRead[20] && ((object) Reader.LocalName == (object)id94_inverse && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@inverse = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[20] = true;
++ }
++ else if (!paramsRead[21] && ((object) Reader.LocalName == (object)id95_mutable && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@mutable = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[21] = true;
++ }
++ else if (!paramsRead[22] && ((object) Reader.LocalName == (object)id96_cascade && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@cascade = Reader.Value;
++ paramsRead[22] = true;
++ }
++ else if (!paramsRead[23] && ((object) Reader.LocalName == (object)id97_orderby && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@orderby = Reader.Value;
++ paramsRead[23] = true;
++ }
++ else if (!paramsRead[24] && ((object) Reader.LocalName == (object)id98_where && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@where = Reader.Value;
++ paramsRead[24] = true;
++ }
++ else if (!paramsRead[25] && ((object) Reader.LocalName == (object)id70_batchsize && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@batchsize = System.Xml.XmlConvert.ToInt32(Reader.Value);
++ o.@batchsizeSpecified = true;
++ paramsRead[25] = true;
++ }
++ else if (!paramsRead[26] && ((object) Reader.LocalName == (object)id99_outerjoin && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@outerjoin = Read26_HbmOuterJoinStrategy(Reader.Value);
++ o.@outerjoinSpecified = true;
++ paramsRead[26] = true;
++ }
++ else if (!paramsRead[27] && ((object) Reader.LocalName == (object)id100_fetch && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@fetch = Read48_HbmCollectionFetchMode(Reader.Value);
++ o.@fetchSpecified = true;
++ paramsRead[27] = true;
++ }
++ else if (!paramsRead[28] && ((object) Reader.LocalName == (object)id68_persister && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@persister = Reader.Value;
++ paramsRead[28] = true;
++ }
++ else if (!paramsRead[29] && ((object) Reader.LocalName == (object)id101_collectiontype && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@collectiontype = Reader.Value;
++ paramsRead[29] = true;
++ }
++ else if (!paramsRead[30] && ((object) Reader.LocalName == (object)id69_check && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@check = Reader.Value;
++ paramsRead[30] = true;
++ }
++ else if (!paramsRead[31] && ((object) Reader.LocalName == (object)id102_optimisticlock && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@optimisticlock = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[31] = true;
++ }
++ else if (!paramsRead[32] && ((object) Reader.LocalName == (object)id71_node && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@node = Reader.Value;
++ paramsRead[32] = true;
++ }
++ else if (!paramsRead[33] && ((object) Reader.LocalName == (object)id103_embedxml && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@embedxml = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[33] = true;
++ }
++ else if (!paramsRead[34] && ((object) Reader.LocalName == (object)id104_generic && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@generic = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ o.@genericSpecified = true;
++ paramsRead[34] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":name, :access, :table, :schema, :catalog, :subselect, :lazy, :inverse, :mutable, :cascade, :order-by, :where, :batch-size, :outer-join, :fetch, :persister, :collection-type, :check, :optimistic-lock, :node, :embed-xml, :generic");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@meta = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta), true);
++ o.@synchronize = (global::NHibernate.Cfg.MappingSchema.HbmSynchronize[])ShrinkArray(a_3, ca_3, typeof(global::NHibernate.Cfg.MappingSchema.HbmSynchronize), true);
++ o.@filter = (global::NHibernate.Cfg.MappingSchema.HbmFilter[])ShrinkArray(a_12, ca_12, typeof(global::NHibernate.Cfg.MappingSchema.HbmFilter), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations24 = 0;
++ int readerCount24 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ if (((object) Reader.LocalName == (object)id13_meta && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])EnsureArrayIndex(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta));a_0[ca_0++] = Read4_HbmMeta(false, true);
++ }
++ else if (!paramsRead[1] && ((object) Reader.LocalName == (object)id61_subselect && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@subselect = Read5_HbmSubselect(false, true);
++ paramsRead[1] = true;
++ }
++ else if (!paramsRead[2] && ((object) Reader.LocalName == (object)id105_cache && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@cache = Read8_HbmCache(false, true);
++ paramsRead[2] = true;
++ }
++ else if (((object) Reader.LocalName == (object)id49_synchronize && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_3 = (global::NHibernate.Cfg.MappingSchema.HbmSynchronize[])EnsureArrayIndex(a_3, ca_3, typeof(global::NHibernate.Cfg.MappingSchema.HbmSynchronize));a_3[ca_3++] = Read9_HbmSynchronize(false, true);
++ }
++ else if (!paramsRead[4] && ((object) Reader.LocalName == (object)id41_comment && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@comment = Read10_HbmComment(false, true);
++ paramsRead[4] = true;
++ }
++ else if (!paramsRead[5] && ((object) Reader.LocalName == (object)id73_key && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@key = Read31_HbmKey(false, true);
++ paramsRead[5] = true;
++ }
++ else if (!paramsRead[6] && ((object) Reader.LocalName == (object)id106_manytoany && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@Item = Read40_HbmManyToAny(false, true);
++ paramsRead[6] = true;
++ }
++ else if (!paramsRead[6] && ((object) Reader.LocalName == (object)id107_element && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@Item = Read39_HbmElement(false, true);
++ paramsRead[6] = true;
++ }
++ else if (!paramsRead[6] && ((object) Reader.LocalName == (object)id108_compositeelement && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@Item = Read38_HbmCompositeElement(false, true);
++ paramsRead[6] = true;
++ }
++ else if (!paramsRead[6] && ((object) Reader.LocalName == (object)id109_manytomany && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@Item = Read42_HbmManyToMany(false, true);
++ paramsRead[6] = true;
++ }
++ else if (!paramsRead[6] && ((object) Reader.LocalName == (object)id110_onetomany && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@Item = Read43_HbmOneToMany(false, true);
++ paramsRead[6] = true;
++ }
++ else if (!paramsRead[7] && ((object) Reader.LocalName == (object)id87_loader && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@loader = Read44_HbmLoader(false, true);
++ paramsRead[7] = true;
++ }
++ else if (!paramsRead[8] && ((object) Reader.LocalName == (object)id88_sqlinsert && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@sqlinsert = Read46_HbmCustomSQL(false, true);
++ paramsRead[8] = true;
++ }
++ else if (!paramsRead[9] && ((object) Reader.LocalName == (object)id89_sqlupdate && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@sqlupdate = Read46_HbmCustomSQL(false, true);
++ paramsRead[9] = true;
++ }
++ else if (!paramsRead[10] && ((object) Reader.LocalName == (object)id90_sqldelete && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@sqldelete = Read46_HbmCustomSQL(false, true);
++ paramsRead[10] = true;
++ }
++ else if (!paramsRead[11] && ((object) Reader.LocalName == (object)id111_sqldeleteall && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@sqldeleteall = Read46_HbmCustomSQL(false, true);
++ paramsRead[11] = true;
++ }
++ else if (((object) Reader.LocalName == (object)id112_filter && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_12 = (global::NHibernate.Cfg.MappingSchema.HbmFilter[])EnsureArrayIndex(a_12, ca_12, typeof(global::NHibernate.Cfg.MappingSchema.HbmFilter));a_12[ca_12++] = Read41_HbmFilter(false, true);
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:meta, urn:nhibernate-mapping-2.2:subselect, urn:nhibernate-mapping-2.2:cache, urn:nhibernate-mapping-2.2:synchronize, urn:nhibernate-mapping-2.2:comment, urn:nhibernate-mapping-2.2:key, urn:nhibernate-mapping-2.2:many-to-any, urn:nhibernate-mapping-2.2:element, urn:nhibernate-mapping-2.2:composite-element, urn:nhibernate-mapping-2.2:many-to-many, urn:nhibernate-mapping-2.2:one-to-many, urn:nhibernate-mapping-2.2:loader, urn:nhibernate-mapping-2.2:sql-insert, urn:nhibernate-mapping-2.2:sql-update, urn:nhibernate-mapping-2.2:sql-delete, urn:nhibernate-mapping-2.2:sql-delete-all, urn:nhibernate-mapping-2.2:filter");
++ }
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:meta, urn:nhibernate-mapping-2.2:subselect, urn:nhibernate-mapping-2.2:cache, urn:nhibernate-mapping-2.2:synchronize, urn:nhibernate-mapping-2.2:comment, urn:nhibernate-mapping-2.2:key, urn:nhibernate-mapping-2.2:many-to-any, urn:nhibernate-mapping-2.2:element, urn:nhibernate-mapping-2.2:composite-element, urn:nhibernate-mapping-2.2:many-to-many, urn:nhibernate-mapping-2.2:one-to-many, urn:nhibernate-mapping-2.2:loader, urn:nhibernate-mapping-2.2:sql-insert, urn:nhibernate-mapping-2.2:sql-update, urn:nhibernate-mapping-2.2:sql-delete, urn:nhibernate-mapping-2.2:sql-delete-all, urn:nhibernate-mapping-2.2:filter");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations24, ref readerCount24);
++ }
++ o.@meta = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta), true);
++ o.@synchronize = (global::NHibernate.Cfg.MappingSchema.HbmSynchronize[])ShrinkArray(a_3, ca_3, typeof(global::NHibernate.Cfg.MappingSchema.HbmSynchronize), true);
++ o.@filter = (global::NHibernate.Cfg.MappingSchema.HbmFilter[])ShrinkArray(a_12, ca_12, typeof(global::NHibernate.Cfg.MappingSchema.HbmFilter), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmFilter Read41_HbmFilter(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmFilter o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmFilter();
++ global::System.String[] a_2 = null;
++ int ca_2 = 0;
++ bool[] paramsRead = new bool[3];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[0] && ((object) Reader.LocalName == (object)id28_name && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@name = Reader.Value;
++ paramsRead[0] = true;
++ }
++ else if (!paramsRead[1] && ((object) Reader.LocalName == (object)id30_condition && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@condition = Reader.Value;
++ paramsRead[1] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":name, :condition");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@Text = (global::System.String[])ShrinkArray(a_2, ca_2, typeof(global::System.String), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations25 = 0;
++ int readerCount25 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ string tmp = null;
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ UnknownNode((object)o, @"");
++ }
++ else if (Reader.NodeType == System.Xml.XmlNodeType.Text ||
++ Reader.NodeType == System.Xml.XmlNodeType.CDATA ||
++ Reader.NodeType == System.Xml.XmlNodeType.Whitespace ||
++ Reader.NodeType == System.Xml.XmlNodeType.SignificantWhitespace) {
++ a_2 = (global::System.String[])EnsureArrayIndex(a_2, ca_2, typeof(global::System.String));a_2[ca_2++] = Reader.ReadString();
++ }
++ else {
++ UnknownNode((object)o, @"");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations25, ref readerCount25);
++ }
++ o.@Text = (global::System.String[])ShrinkArray(a_2, ca_2, typeof(global::System.String), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmOneToMany Read43_HbmOneToMany(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmOneToMany o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmOneToMany();
++ bool[] paramsRead = new bool[5];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[0] && ((object) Reader.LocalName == (object)id1_class && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@class = Reader.Value;
++ paramsRead[0] = true;
++ }
++ else if (!paramsRead[1] && ((object) Reader.LocalName == (object)id113_notfound && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@notfound = Read19_HbmNotFoundMode(Reader.Value);
++ paramsRead[1] = true;
++ }
++ else if (!paramsRead[2] && ((object) Reader.LocalName == (object)id71_node && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@node = Reader.Value;
++ paramsRead[2] = true;
++ }
++ else if (!paramsRead[3] && ((object) Reader.LocalName == (object)id103_embedxml && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@embedxml = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[3] = true;
++ }
++ else if (!paramsRead[4] && ((object) Reader.LocalName == (object)id57_entityname && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@entityname = Reader.Value;
++ paramsRead[4] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":class, :not-found, :node, :embed-xml, :entity-name");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations26 = 0;
++ int readerCount26 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ UnknownNode((object)o, @"");
++ }
++ else {
++ UnknownNode((object)o, @"");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations26, ref readerCount26);
++ }
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmNotFoundMode Read19_HbmNotFoundMode(string s) {
++ switch (s) {
++ case @"ignore": return global::NHibernate.Cfg.MappingSchema.HbmNotFoundMode.@Ignore;
++ case @"exception": return global::NHibernate.Cfg.MappingSchema.HbmNotFoundMode.@Exception;
++ default: throw CreateUnknownConstantException(s, typeof(global::NHibernate.Cfg.MappingSchema.HbmNotFoundMode));
++ }
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmManyToMany Read42_HbmManyToMany(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmManyToMany o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmManyToMany();
++ global::NHibernate.Cfg.MappingSchema.HbmMeta[] a_0 = null;
++ int ca_0 = 0;
++ global::System.Object[] a_1 = null;
++ int ca_1 = 0;
++ global::NHibernate.Cfg.MappingSchema.HbmFilter[] a_2 = null;
++ int ca_2 = 0;
++ bool[] paramsRead = new bool[18];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[3] && ((object) Reader.LocalName == (object)id1_class && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@class = Reader.Value;
++ paramsRead[3] = true;
++ }
++ else if (!paramsRead[4] && ((object) Reader.LocalName == (object)id71_node && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@node = Reader.Value;
++ paramsRead[4] = true;
++ }
++ else if (!paramsRead[5] && ((object) Reader.LocalName == (object)id103_embedxml && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@embedxml = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[5] = true;
++ }
++ else if (!paramsRead[6] && ((object) Reader.LocalName == (object)id57_entityname && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@entityname = Reader.Value;
++ paramsRead[6] = true;
++ }
++ else if (!paramsRead[7] && ((object) Reader.LocalName == (object)id55_column && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@column = Reader.Value;
++ paramsRead[7] = true;
++ }
++ else if (!paramsRead[8] && ((object) Reader.LocalName == (object)id114_formula && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@formula = Reader.Value;
++ paramsRead[8] = true;
++ }
++ else if (!paramsRead[9] && ((object) Reader.LocalName == (object)id113_notfound && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@notfound = Read19_HbmNotFoundMode(Reader.Value);
++ paramsRead[9] = true;
++ }
++ else if (!paramsRead[10] && ((object) Reader.LocalName == (object)id99_outerjoin && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@outerjoin = Read26_HbmOuterJoinStrategy(Reader.Value);
++ o.@outerjoinSpecified = true;
++ paramsRead[10] = true;
++ }
++ else if (!paramsRead[11] && ((object) Reader.LocalName == (object)id100_fetch && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@fetch = Read27_HbmFetchMode(Reader.Value);
++ o.@fetchSpecified = true;
++ paramsRead[11] = true;
++ }
++ else if (!paramsRead[12] && ((object) Reader.LocalName == (object)id66_lazy && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@lazy = Read18_HbmRestrictedLaziness(Reader.Value);
++ o.@lazySpecified = true;
++ paramsRead[12] = true;
++ }
++ else if (!paramsRead[13] && ((object) Reader.LocalName == (object)id115_foreignkey && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@foreignkey = Reader.Value;
++ paramsRead[13] = true;
++ }
++ else if (!paramsRead[14] && ((object) Reader.LocalName == (object)id116_unique && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@unique = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[14] = true;
++ }
++ else if (!paramsRead[15] && ((object) Reader.LocalName == (object)id98_where && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@where = Reader.Value;
++ paramsRead[15] = true;
++ }
++ else if (!paramsRead[16] && ((object) Reader.LocalName == (object)id97_orderby && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@orderby = Reader.Value;
++ paramsRead[16] = true;
++ }
++ else if (!paramsRead[17] && ((object) Reader.LocalName == (object)id117_propertyref && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@propertyref = Reader.Value;
++ paramsRead[17] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":class, :node, :embed-xml, :entity-name, :column, :formula, :not-found, :outer-join, :fetch, :lazy, :foreign-key, :unique, :where, :order-by, :property-ref");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@meta = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta), true);
++ o.@Items = (global::System.Object[])ShrinkArray(a_1, ca_1, typeof(global::System.Object), true);
++ o.@filter = (global::NHibernate.Cfg.MappingSchema.HbmFilter[])ShrinkArray(a_2, ca_2, typeof(global::NHibernate.Cfg.MappingSchema.HbmFilter), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations27 = 0;
++ int readerCount27 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ if (((object) Reader.LocalName == (object)id13_meta && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])EnsureArrayIndex(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta));a_0[ca_0++] = Read4_HbmMeta(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id114_formula && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_1 = (global::System.Object[])EnsureArrayIndex(a_1, ca_1, typeof(global::System.Object));a_1[ca_1++] = Read24_HbmFormula(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id55_column && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_1 = (global::System.Object[])EnsureArrayIndex(a_1, ca_1, typeof(global::System.Object));a_1[ca_1++] = Read13_HbmColumn(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id112_filter && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_2 = (global::NHibernate.Cfg.MappingSchema.HbmFilter[])EnsureArrayIndex(a_2, ca_2, typeof(global::NHibernate.Cfg.MappingSchema.HbmFilter));a_2[ca_2++] = Read41_HbmFilter(false, true);
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:meta, urn:nhibernate-mapping-2.2:formula, urn:nhibernate-mapping-2.2:column, urn:nhibernate-mapping-2.2:filter");
++ }
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:meta, urn:nhibernate-mapping-2.2:formula, urn:nhibernate-mapping-2.2:column, urn:nhibernate-mapping-2.2:filter");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations27, ref readerCount27);
++ }
++ o.@meta = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta), true);
++ o.@Items = (global::System.Object[])ShrinkArray(a_1, ca_1, typeof(global::System.Object), true);
++ o.@filter = (global::NHibernate.Cfg.MappingSchema.HbmFilter[])ShrinkArray(a_2, ca_2, typeof(global::NHibernate.Cfg.MappingSchema.HbmFilter), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmColumn Read13_HbmColumn(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmColumn o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmColumn();
++ bool[] paramsRead = new bool[12];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[1] && ((object) Reader.LocalName == (object)id28_name && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@name = Reader.Value;
++ paramsRead[1] = true;
++ }
++ else if (!paramsRead[2] && ((object) Reader.LocalName == (object)id118_length && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@length = CollapseWhitespace(Reader.Value);
++ paramsRead[2] = true;
++ }
++ else if (!paramsRead[3] && ((object) Reader.LocalName == (object)id119_precision && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@precision = CollapseWhitespace(Reader.Value);
++ paramsRead[3] = true;
++ }
++ else if (!paramsRead[4] && ((object) Reader.LocalName == (object)id120_scale && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@scale = CollapseWhitespace(Reader.Value);
++ paramsRead[4] = true;
++ }
++ else if (!paramsRead[5] && ((object) Reader.LocalName == (object)id121_notnull && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@notnull = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ o.@notnullSpecified = true;
++ paramsRead[5] = true;
++ }
++ else if (!paramsRead[6] && ((object) Reader.LocalName == (object)id116_unique && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@unique = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ o.@uniqueSpecified = true;
++ paramsRead[6] = true;
++ }
++ else if (!paramsRead[7] && ((object) Reader.LocalName == (object)id122_uniquekey && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@uniquekey = Reader.Value;
++ paramsRead[7] = true;
++ }
++ else if (!paramsRead[8] && ((object) Reader.LocalName == (object)id123_sqltype && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@sqltype = Reader.Value;
++ paramsRead[8] = true;
++ }
++ else if (!paramsRead[9] && ((object) Reader.LocalName == (object)id124_index && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@index = Reader.Value;
++ paramsRead[9] = true;
++ }
++ else if (!paramsRead[10] && ((object) Reader.LocalName == (object)id69_check && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@check = Reader.Value;
++ paramsRead[10] = true;
++ }
++ else if (!paramsRead[11] && ((object) Reader.LocalName == (object)id125_default && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@default = Reader.Value;
++ paramsRead[11] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":name, :length, :precision, :scale, :not-null, :unique, :unique-key, :sql-type, :index, :check, :default");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations28 = 0;
++ int readerCount28 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ if (!paramsRead[0] && ((object) Reader.LocalName == (object)id41_comment && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@comment = Read10_HbmComment(false, true);
++ paramsRead[0] = true;
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:comment");
++ }
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:comment");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations28, ref readerCount28);
++ }
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmComment Read10_HbmComment(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmComment o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmComment();
++ global::System.String[] a_0 = null;
++ int ca_0 = 0;
++ bool[] paramsRead = new bool[1];
++ while (Reader.MoveToNextAttribute()) {
++ if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o);
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@Text = (global::System.String[])ShrinkArray(a_0, ca_0, typeof(global::System.String), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations29 = 0;
++ int readerCount29 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ string tmp = null;
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ UnknownNode((object)o, @"");
++ }
++ else if (Reader.NodeType == System.Xml.XmlNodeType.Text ||
++ Reader.NodeType == System.Xml.XmlNodeType.CDATA ||
++ Reader.NodeType == System.Xml.XmlNodeType.Whitespace ||
++ Reader.NodeType == System.Xml.XmlNodeType.SignificantWhitespace) {
++ a_0 = (global::System.String[])EnsureArrayIndex(a_0, ca_0, typeof(global::System.String));a_0[ca_0++] = Reader.ReadString();
++ }
++ else {
++ UnknownNode((object)o, @"");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations29, ref readerCount29);
++ }
++ o.@Text = (global::System.String[])ShrinkArray(a_0, ca_0, typeof(global::System.String), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmFormula Read24_HbmFormula(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmFormula o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmFormula();
++ global::System.String[] a_0 = null;
++ int ca_0 = 0;
++ bool[] paramsRead = new bool[1];
++ while (Reader.MoveToNextAttribute()) {
++ if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o);
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@Text = (global::System.String[])ShrinkArray(a_0, ca_0, typeof(global::System.String), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations30 = 0;
++ int readerCount30 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ string tmp = null;
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ UnknownNode((object)o, @"");
++ }
++ else if (Reader.NodeType == System.Xml.XmlNodeType.Text ||
++ Reader.NodeType == System.Xml.XmlNodeType.CDATA ||
++ Reader.NodeType == System.Xml.XmlNodeType.Whitespace ||
++ Reader.NodeType == System.Xml.XmlNodeType.SignificantWhitespace) {
++ a_0 = (global::System.String[])EnsureArrayIndex(a_0, ca_0, typeof(global::System.String));a_0[ca_0++] = Reader.ReadString();
++ }
++ else {
++ UnknownNode((object)o, @"");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations30, ref readerCount30);
++ }
++ o.@Text = (global::System.String[])ShrinkArray(a_0, ca_0, typeof(global::System.String), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmMeta Read4_HbmMeta(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmMeta o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmMeta();
++ global::System.String[] a_2 = null;
++ int ca_2 = 0;
++ bool[] paramsRead = new bool[3];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[0] && ((object) Reader.LocalName == (object)id126_attribute && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@attribute = Reader.Value;
++ paramsRead[0] = true;
++ }
++ else if (!paramsRead[1] && ((object) Reader.LocalName == (object)id127_inherit && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@inherit = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[1] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":attribute, :inherit");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@Text = (global::System.String[])ShrinkArray(a_2, ca_2, typeof(global::System.String), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations31 = 0;
++ int readerCount31 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ string tmp = null;
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ UnknownNode((object)o, @"");
++ }
++ else if (Reader.NodeType == System.Xml.XmlNodeType.Text ||
++ Reader.NodeType == System.Xml.XmlNodeType.CDATA ||
++ Reader.NodeType == System.Xml.XmlNodeType.Whitespace ||
++ Reader.NodeType == System.Xml.XmlNodeType.SignificantWhitespace) {
++ a_2 = (global::System.String[])EnsureArrayIndex(a_2, ca_2, typeof(global::System.String));a_2[ca_2++] = Reader.ReadString();
++ }
++ else {
++ UnknownNode((object)o, @"");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations31, ref readerCount31);
++ }
++ o.@Text = (global::System.String[])ShrinkArray(a_2, ca_2, typeof(global::System.String), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmRestrictedLaziness Read18_HbmRestrictedLaziness(string s) {
++ switch (s) {
++ case @"false": return global::NHibernate.Cfg.MappingSchema.HbmRestrictedLaziness.@False;
++ case @"proxy": return global::NHibernate.Cfg.MappingSchema.HbmRestrictedLaziness.@Proxy;
++ default: throw CreateUnknownConstantException(s, typeof(global::NHibernate.Cfg.MappingSchema.HbmRestrictedLaziness));
++ }
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmFetchMode Read27_HbmFetchMode(string s) {
++ switch (s) {
++ case @"select": return global::NHibernate.Cfg.MappingSchema.HbmFetchMode.@Select;
++ case @"join": return global::NHibernate.Cfg.MappingSchema.HbmFetchMode.@Join;
++ default: throw CreateUnknownConstantException(s, typeof(global::NHibernate.Cfg.MappingSchema.HbmFetchMode));
++ }
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmOuterJoinStrategy Read26_HbmOuterJoinStrategy(string s) {
++ switch (s) {
++ case @"auto": return global::NHibernate.Cfg.MappingSchema.HbmOuterJoinStrategy.@Auto;
++ case @"true": return global::NHibernate.Cfg.MappingSchema.HbmOuterJoinStrategy.@True;
++ case @"false": return global::NHibernate.Cfg.MappingSchema.HbmOuterJoinStrategy.@False;
++ default: throw CreateUnknownConstantException(s, typeof(global::NHibernate.Cfg.MappingSchema.HbmOuterJoinStrategy));
++ }
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmCompositeElement Read38_HbmCompositeElement(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmCompositeElement o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmCompositeElement();
++ global::NHibernate.Cfg.MappingSchema.HbmMeta[] a_0 = null;
++ int ca_0 = 0;
++ global::System.Object[] a_2 = null;
++ int ca_2 = 0;
++ bool[] paramsRead = new bool[5];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[3] && ((object) Reader.LocalName == (object)id1_class && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@class = Reader.Value;
++ paramsRead[3] = true;
++ }
++ else if (!paramsRead[4] && ((object) Reader.LocalName == (object)id71_node && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@node = Reader.Value;
++ paramsRead[4] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":class, :node");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@meta = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta), true);
++ o.@Items = (global::System.Object[])ShrinkArray(a_2, ca_2, typeof(global::System.Object), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations32 = 0;
++ int readerCount32 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ if (((object) Reader.LocalName == (object)id13_meta && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])EnsureArrayIndex(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta));a_0[ca_0++] = Read4_HbmMeta(false, true);
++ }
++ else if (!paramsRead[1] && ((object) Reader.LocalName == (object)id128_parent && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@parent = Read32_HbmParent(false, true);
++ paramsRead[1] = true;
++ }
++ else if (((object) Reader.LocalName == (object)id59_property && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_2 = (global::System.Object[])EnsureArrayIndex(a_2, ca_2, typeof(global::System.Object));a_2[ca_2++] = Read34_HbmProperty(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id84_any && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_2 = (global::System.Object[])EnsureArrayIndex(a_2, ca_2, typeof(global::System.Object));a_2[ca_2++] = Read36_HbmAny(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id78_manytoone && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_2 = (global::System.Object[])EnsureArrayIndex(a_2, ca_2, typeof(global::System.Object));a_2[ca_2++] = Read29_HbmManyToOne(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id129_nestedcompositeelement && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_2 = (global::System.Object[])EnsureArrayIndex(a_2, ca_2, typeof(global::System.Object));a_2[ca_2++] = Read37_HbmNestedCompositeElement(false, true);
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:meta, urn:nhibernate-mapping-2.2:parent, urn:nhibernate-mapping-2.2:property, urn:nhibernate-mapping-2.2:any, urn:nhibernate-mapping-2.2:many-to-one, urn:nhibernate-mapping-2.2:nested-composite-element");
++ }
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:meta, urn:nhibernate-mapping-2.2:parent, urn:nhibernate-mapping-2.2:property, urn:nhibernate-mapping-2.2:any, urn:nhibernate-mapping-2.2:many-to-one, urn:nhibernate-mapping-2.2:nested-composite-element");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations32, ref readerCount32);
++ }
++ o.@meta = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta), true);
++ o.@Items = (global::System.Object[])ShrinkArray(a_2, ca_2, typeof(global::System.Object), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmNestedCompositeElement Read37_HbmNestedCompositeElement(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmNestedCompositeElement o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmNestedCompositeElement();
++ global::System.Object[] a_1 = null;
++ int ca_1 = 0;
++ bool[] paramsRead = new bool[6];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[2] && ((object) Reader.LocalName == (object)id1_class && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@class = Reader.Value;
++ paramsRead[2] = true;
++ }
++ else if (!paramsRead[3] && ((object) Reader.LocalName == (object)id28_name && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@name = Reader.Value;
++ paramsRead[3] = true;
++ }
++ else if (!paramsRead[4] && ((object) Reader.LocalName == (object)id93_access && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@access = Reader.Value;
++ paramsRead[4] = true;
++ }
++ else if (!paramsRead[5] && ((object) Reader.LocalName == (object)id71_node && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@node = Reader.Value;
++ paramsRead[5] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":class, :name, :access, :node");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@Items = (global::System.Object[])ShrinkArray(a_1, ca_1, typeof(global::System.Object), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations33 = 0;
++ int readerCount33 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ if (!paramsRead[0] && ((object) Reader.LocalName == (object)id128_parent && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@parent = Read32_HbmParent(false, true);
++ paramsRead[0] = true;
++ }
++ else if (((object) Reader.LocalName == (object)id59_property && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_1 = (global::System.Object[])EnsureArrayIndex(a_1, ca_1, typeof(global::System.Object));a_1[ca_1++] = Read34_HbmProperty(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id84_any && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_1 = (global::System.Object[])EnsureArrayIndex(a_1, ca_1, typeof(global::System.Object));a_1[ca_1++] = Read36_HbmAny(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id78_manytoone && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_1 = (global::System.Object[])EnsureArrayIndex(a_1, ca_1, typeof(global::System.Object));a_1[ca_1++] = Read29_HbmManyToOne(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id129_nestedcompositeelement && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_1 = (global::System.Object[])EnsureArrayIndex(a_1, ca_1, typeof(global::System.Object));a_1[ca_1++] = Read37_HbmNestedCompositeElement(false, true);
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:parent, urn:nhibernate-mapping-2.2:property, urn:nhibernate-mapping-2.2:any, urn:nhibernate-mapping-2.2:many-to-one, urn:nhibernate-mapping-2.2:nested-composite-element");
++ }
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:parent, urn:nhibernate-mapping-2.2:property, urn:nhibernate-mapping-2.2:any, urn:nhibernate-mapping-2.2:many-to-one, urn:nhibernate-mapping-2.2:nested-composite-element");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations33, ref readerCount33);
++ }
++ o.@Items = (global::System.Object[])ShrinkArray(a_1, ca_1, typeof(global::System.Object), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmManyToOne Read29_HbmManyToOne(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmManyToOne o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmManyToOne();
++ global::NHibernate.Cfg.MappingSchema.HbmMeta[] a_0 = null;
++ int ca_0 = 0;
++ global::System.Object[] a_1 = null;
++ int ca_1 = 0;
++ bool[] paramsRead = new bool[24];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[2] && ((object) Reader.LocalName == (object)id28_name && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@name = Reader.Value;
++ paramsRead[2] = true;
++ }
++ else if (!paramsRead[3] && ((object) Reader.LocalName == (object)id93_access && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@access = Reader.Value;
++ paramsRead[3] = true;
++ }
++ else if (!paramsRead[4] && ((object) Reader.LocalName == (object)id1_class && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@class = Reader.Value;
++ paramsRead[4] = true;
++ }
++ else if (!paramsRead[5] && ((object) Reader.LocalName == (object)id57_entityname && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@entityname = Reader.Value;
++ paramsRead[5] = true;
++ }
++ else if (!paramsRead[6] && ((object) Reader.LocalName == (object)id55_column && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@column = Reader.Value;
++ paramsRead[6] = true;
++ }
++ else if (!paramsRead[7] && ((object) Reader.LocalName == (object)id121_notnull && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@notnull = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ o.@notnullSpecified = true;
++ paramsRead[7] = true;
++ }
++ else if (!paramsRead[8] && ((object) Reader.LocalName == (object)id116_unique && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@unique = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[8] = true;
++ }
++ else if (!paramsRead[9] && ((object) Reader.LocalName == (object)id122_uniquekey && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@uniquekey = Reader.Value;
++ paramsRead[9] = true;
++ }
++ else if (!paramsRead[10] && ((object) Reader.LocalName == (object)id124_index && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@index = Reader.Value;
++ paramsRead[10] = true;
++ }
++ else if (!paramsRead[11] && ((object) Reader.LocalName == (object)id96_cascade && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@cascade = Reader.Value;
++ paramsRead[11] = true;
++ }
++ else if (!paramsRead[12] && ((object) Reader.LocalName == (object)id99_outerjoin && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@outerjoin = Read26_HbmOuterJoinStrategy(Reader.Value);
++ o.@outerjoinSpecified = true;
++ paramsRead[12] = true;
++ }
++ else if (!paramsRead[13] && ((object) Reader.LocalName == (object)id100_fetch && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@fetch = Read27_HbmFetchMode(Reader.Value);
++ o.@fetchSpecified = true;
++ paramsRead[13] = true;
++ }
++ else if (!paramsRead[14] && ((object) Reader.LocalName == (object)id130_update && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@update = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[14] = true;
++ }
++ else if (!paramsRead[15] && ((object) Reader.LocalName == (object)id131_insert && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@insert = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[15] = true;
++ }
++ else if (!paramsRead[16] && ((object) Reader.LocalName == (object)id102_optimisticlock && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@optimisticlock = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[16] = true;
++ }
++ else if (!paramsRead[17] && ((object) Reader.LocalName == (object)id115_foreignkey && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@foreignkey = Reader.Value;
++ paramsRead[17] = true;
++ }
++ else if (!paramsRead[18] && ((object) Reader.LocalName == (object)id117_propertyref && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@propertyref = Reader.Value;
++ paramsRead[18] = true;
++ }
++ else if (!paramsRead[19] && ((object) Reader.LocalName == (object)id114_formula && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@formula = Reader.Value;
++ paramsRead[19] = true;
++ }
++ else if (!paramsRead[20] && ((object) Reader.LocalName == (object)id66_lazy && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@lazy = Read28_HbmLaziness(Reader.Value);
++ o.@lazySpecified = true;
++ paramsRead[20] = true;
++ }
++ else if (!paramsRead[21] && ((object) Reader.LocalName == (object)id113_notfound && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@notfound = Read19_HbmNotFoundMode(Reader.Value);
++ paramsRead[21] = true;
++ }
++ else if (!paramsRead[22] && ((object) Reader.LocalName == (object)id71_node && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@node = Reader.Value;
++ paramsRead[22] = true;
++ }
++ else if (!paramsRead[23] && ((object) Reader.LocalName == (object)id103_embedxml && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@embedxml = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[23] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":name, :access, :class, :entity-name, :column, :not-null, :unique, :unique-key, :index, :cascade, :outer-join, :fetch, :update, :insert, :optimistic-lock, :foreign-key, :property-ref, :formula, :lazy, :not-found, :node, :embed-xml");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@meta = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta), true);
++ o.@Items = (global::System.Object[])ShrinkArray(a_1, ca_1, typeof(global::System.Object), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations34 = 0;
++ int readerCount34 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ if (((object) Reader.LocalName == (object)id13_meta && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])EnsureArrayIndex(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta));a_0[ca_0++] = Read4_HbmMeta(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id114_formula && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_1 = (global::System.Object[])EnsureArrayIndex(a_1, ca_1, typeof(global::System.Object));a_1[ca_1++] = Read24_HbmFormula(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id55_column && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_1 = (global::System.Object[])EnsureArrayIndex(a_1, ca_1, typeof(global::System.Object));a_1[ca_1++] = Read13_HbmColumn(false, true);
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:meta, urn:nhibernate-mapping-2.2:formula, urn:nhibernate-mapping-2.2:column");
++ }
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:meta, urn:nhibernate-mapping-2.2:formula, urn:nhibernate-mapping-2.2:column");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations34, ref readerCount34);
++ }
++ o.@meta = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta), true);
++ o.@Items = (global::System.Object[])ShrinkArray(a_1, ca_1, typeof(global::System.Object), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmLaziness Read28_HbmLaziness(string s) {
++ switch (s) {
++ case @"false": return global::NHibernate.Cfg.MappingSchema.HbmLaziness.@False;
++ case @"proxy": return global::NHibernate.Cfg.MappingSchema.HbmLaziness.@Proxy;
++ case @"no-proxy": return global::NHibernate.Cfg.MappingSchema.HbmLaziness.@NoProxy;
++ default: throw CreateUnknownConstantException(s, typeof(global::NHibernate.Cfg.MappingSchema.HbmLaziness));
++ }
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmAny Read36_HbmAny(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmAny o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmAny();
++ global::NHibernate.Cfg.MappingSchema.HbmMeta[] a_0 = null;
++ int ca_0 = 0;
++ global::NHibernate.Cfg.MappingSchema.HbmMetaValue[] a_1 = null;
++ int ca_1 = 0;
++ global::NHibernate.Cfg.MappingSchema.HbmColumn[] a_2 = null;
++ int ca_2 = 0;
++ bool[] paramsRead = new bool[15];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[3] && ((object) Reader.LocalName == (object)id55_column && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@column1 = Reader.Value;
++ paramsRead[3] = true;
++ }
++ else if (!paramsRead[4] && ((object) Reader.LocalName == (object)id132_idtype && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@idtype = Reader.Value;
++ paramsRead[4] = true;
++ }
++ else if (!paramsRead[5] && ((object) Reader.LocalName == (object)id133_metatype && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@metatype = Reader.Value;
++ paramsRead[5] = true;
++ }
++ else if (!paramsRead[6] && ((object) Reader.LocalName == (object)id28_name && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@name = Reader.Value;
++ paramsRead[6] = true;
++ }
++ else if (!paramsRead[7] && ((object) Reader.LocalName == (object)id93_access && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@access = Reader.Value;
++ paramsRead[7] = true;
++ }
++ else if (!paramsRead[8] && ((object) Reader.LocalName == (object)id131_insert && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@insert = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[8] = true;
++ }
++ else if (!paramsRead[9] && ((object) Reader.LocalName == (object)id130_update && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@update = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[9] = true;
++ }
++ else if (!paramsRead[10] && ((object) Reader.LocalName == (object)id96_cascade && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@cascade = Reader.Value;
++ paramsRead[10] = true;
++ }
++ else if (!paramsRead[11] && ((object) Reader.LocalName == (object)id124_index && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@index = Reader.Value;
++ paramsRead[11] = true;
++ }
++ else if (!paramsRead[12] && ((object) Reader.LocalName == (object)id102_optimisticlock && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@optimisticlock = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[12] = true;
++ }
++ else if (!paramsRead[13] && ((object) Reader.LocalName == (object)id66_lazy && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@lazy = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[13] = true;
++ }
++ else if (!paramsRead[14] && ((object) Reader.LocalName == (object)id71_node && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@node = Reader.Value;
++ paramsRead[14] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":column, :id-type, :meta-type, :name, :access, :insert, :update, :cascade, :index, :optimistic-lock, :lazy, :node");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@meta = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta), true);
++ o.@metavalue = (global::NHibernate.Cfg.MappingSchema.HbmMetaValue[])ShrinkArray(a_1, ca_1, typeof(global::NHibernate.Cfg.MappingSchema.HbmMetaValue), true);
++ o.@column = (global::NHibernate.Cfg.MappingSchema.HbmColumn[])ShrinkArray(a_2, ca_2, typeof(global::NHibernate.Cfg.MappingSchema.HbmColumn), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations35 = 0;
++ int readerCount35 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ if (((object) Reader.LocalName == (object)id13_meta && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])EnsureArrayIndex(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta));a_0[ca_0++] = Read4_HbmMeta(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id134_metavalue && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_1 = (global::NHibernate.Cfg.MappingSchema.HbmMetaValue[])EnsureArrayIndex(a_1, ca_1, typeof(global::NHibernate.Cfg.MappingSchema.HbmMetaValue));a_1[ca_1++] = Read35_HbmMetaValue(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id55_column && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_2 = (global::NHibernate.Cfg.MappingSchema.HbmColumn[])EnsureArrayIndex(a_2, ca_2, typeof(global::NHibernate.Cfg.MappingSchema.HbmColumn));a_2[ca_2++] = Read13_HbmColumn(false, true);
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:meta, urn:nhibernate-mapping-2.2:meta-value, urn:nhibernate-mapping-2.2:column");
++ }
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:meta, urn:nhibernate-mapping-2.2:meta-value, urn:nhibernate-mapping-2.2:column");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations35, ref readerCount35);
++ }
++ o.@meta = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta), true);
++ o.@metavalue = (global::NHibernate.Cfg.MappingSchema.HbmMetaValue[])ShrinkArray(a_1, ca_1, typeof(global::NHibernate.Cfg.MappingSchema.HbmMetaValue), true);
++ o.@column = (global::NHibernate.Cfg.MappingSchema.HbmColumn[])ShrinkArray(a_2, ca_2, typeof(global::NHibernate.Cfg.MappingSchema.HbmColumn), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmMetaValue Read35_HbmMetaValue(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmMetaValue o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmMetaValue();
++ bool[] paramsRead = new bool[2];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[0] && ((object) Reader.LocalName == (object)id135_value && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@value = Reader.Value;
++ paramsRead[0] = true;
++ }
++ else if (!paramsRead[1] && ((object) Reader.LocalName == (object)id1_class && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@class = Reader.Value;
++ paramsRead[1] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":value, :class");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations36 = 0;
++ int readerCount36 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ UnknownNode((object)o, @"");
++ }
++ else {
++ UnknownNode((object)o, @"");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations36, ref readerCount36);
++ }
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmProperty Read34_HbmProperty(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmProperty o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmProperty();
++ global::NHibernate.Cfg.MappingSchema.HbmMeta[] a_0 = null;
++ int ca_0 = 0;
++ global::System.Object[] a_1 = null;
++ int ca_1 = 0;
++ bool[] paramsRead = new bool[21];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[3] && ((object) Reader.LocalName == (object)id28_name && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@name = Reader.Value;
++ paramsRead[3] = true;
++ }
++ else if (!paramsRead[4] && ((object) Reader.LocalName == (object)id71_node && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@node = Reader.Value;
++ paramsRead[4] = true;
++ }
++ else if (!paramsRead[5] && ((object) Reader.LocalName == (object)id93_access && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@access = Reader.Value;
++ paramsRead[5] = true;
++ }
++ else if (!paramsRead[6] && ((object) Reader.LocalName == (object)id33_type && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@type1 = Reader.Value;
++ paramsRead[6] = true;
++ }
++ else if (!paramsRead[7] && ((object) Reader.LocalName == (object)id55_column && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@column = Reader.Value;
++ paramsRead[7] = true;
++ }
++ else if (!paramsRead[8] && ((object) Reader.LocalName == (object)id118_length && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@length = CollapseWhitespace(Reader.Value);
++ paramsRead[8] = true;
++ }
++ else if (!paramsRead[9] && ((object) Reader.LocalName == (object)id119_precision && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@precision = CollapseWhitespace(Reader.Value);
++ paramsRead[9] = true;
++ }
++ else if (!paramsRead[10] && ((object) Reader.LocalName == (object)id120_scale && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@scale = CollapseWhitespace(Reader.Value);
++ paramsRead[10] = true;
++ }
++ else if (!paramsRead[11] && ((object) Reader.LocalName == (object)id121_notnull && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@notnull = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ o.@notnullSpecified = true;
++ paramsRead[11] = true;
++ }
++ else if (!paramsRead[12] && ((object) Reader.LocalName == (object)id116_unique && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@unique = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[12] = true;
++ }
++ else if (!paramsRead[13] && ((object) Reader.LocalName == (object)id122_uniquekey && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@uniquekey = Reader.Value;
++ paramsRead[13] = true;
++ }
++ else if (!paramsRead[14] && ((object) Reader.LocalName == (object)id124_index && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@index = Reader.Value;
++ paramsRead[14] = true;
++ }
++ else if (!paramsRead[15] && ((object) Reader.LocalName == (object)id130_update && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@update = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ o.@updateSpecified = true;
++ paramsRead[15] = true;
++ }
++ else if (!paramsRead[16] && ((object) Reader.LocalName == (object)id131_insert && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@insert = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ o.@insertSpecified = true;
++ paramsRead[16] = true;
++ }
++ else if (!paramsRead[17] && ((object) Reader.LocalName == (object)id102_optimisticlock && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@optimisticlock = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[17] = true;
++ }
++ else if (!paramsRead[18] && ((object) Reader.LocalName == (object)id114_formula && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@formula = Reader.Value;
++ paramsRead[18] = true;
++ }
++ else if (!paramsRead[19] && ((object) Reader.LocalName == (object)id66_lazy && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@lazy = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[19] = true;
++ }
++ else if (!paramsRead[20] && ((object) Reader.LocalName == (object)id136_generated && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@generated = Read33_HbmPropertyGeneration(Reader.Value);
++ paramsRead[20] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":name, :node, :access, :type, :column, :length, :precision, :scale, :not-null, :unique, :unique-key, :index, :update, :insert, :optimistic-lock, :formula, :lazy, :generated");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@meta = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta), true);
++ o.@Items = (global::System.Object[])ShrinkArray(a_1, ca_1, typeof(global::System.Object), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations37 = 0;
++ int readerCount37 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ if (((object) Reader.LocalName == (object)id13_meta && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])EnsureArrayIndex(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta));a_0[ca_0++] = Read4_HbmMeta(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id114_formula && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_1 = (global::System.Object[])EnsureArrayIndex(a_1, ca_1, typeof(global::System.Object));a_1[ca_1++] = Read24_HbmFormula(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id55_column && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_1 = (global::System.Object[])EnsureArrayIndex(a_1, ca_1, typeof(global::System.Object));a_1[ca_1++] = Read13_HbmColumn(false, true);
++ }
++ else if (!paramsRead[2] && ((object) Reader.LocalName == (object)id33_type && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@type = Read15_HbmType(false, true);
++ paramsRead[2] = true;
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:meta, urn:nhibernate-mapping-2.2:formula, urn:nhibernate-mapping-2.2:column, urn:nhibernate-mapping-2.2:type");
++ }
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:meta, urn:nhibernate-mapping-2.2:formula, urn:nhibernate-mapping-2.2:column, urn:nhibernate-mapping-2.2:type");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations37, ref readerCount37);
++ }
++ o.@meta = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta), true);
++ o.@Items = (global::System.Object[])ShrinkArray(a_1, ca_1, typeof(global::System.Object), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmType Read15_HbmType(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmType o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmType();
++ global::NHibernate.Cfg.MappingSchema.HbmParam[] a_0 = null;
++ int ca_0 = 0;
++ bool[] paramsRead = new bool[2];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[1] && ((object) Reader.LocalName == (object)id28_name && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@name = Reader.Value;
++ paramsRead[1] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":name");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@param = (global::NHibernate.Cfg.MappingSchema.HbmParam[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmParam), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations38 = 0;
++ int readerCount38 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ if (((object) Reader.LocalName == (object)id29_param && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::NHibernate.Cfg.MappingSchema.HbmParam[])EnsureArrayIndex(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmParam));a_0[ca_0++] = Read14_HbmParam(false, true);
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:param");
++ }
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:param");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations38, ref readerCount38);
++ }
++ o.@param = (global::NHibernate.Cfg.MappingSchema.HbmParam[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmParam), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmPropertyGeneration Read33_HbmPropertyGeneration(string s) {
++ switch (s) {
++ case @"never": return global::NHibernate.Cfg.MappingSchema.HbmPropertyGeneration.@Never;
++ case @"insert": return global::NHibernate.Cfg.MappingSchema.HbmPropertyGeneration.@Insert;
++ case @"always": return global::NHibernate.Cfg.MappingSchema.HbmPropertyGeneration.@Always;
++ default: throw CreateUnknownConstantException(s, typeof(global::NHibernate.Cfg.MappingSchema.HbmPropertyGeneration));
++ }
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmParent Read32_HbmParent(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmParent o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmParent();
++ bool[] paramsRead = new bool[1];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[0] && ((object) Reader.LocalName == (object)id28_name && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@name = Reader.Value;
++ paramsRead[0] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":name");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations39 = 0;
++ int readerCount39 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ UnknownNode((object)o, @"");
++ }
++ else {
++ UnknownNode((object)o, @"");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations39, ref readerCount39);
++ }
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmElement Read39_HbmElement(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmElement o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmElement();
++ global::System.Object[] a_0 = null;
++ int ca_0 = 0;
++ bool[] paramsRead = new bool[11];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[2] && ((object) Reader.LocalName == (object)id55_column && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@column = Reader.Value;
++ paramsRead[2] = true;
++ }
++ else if (!paramsRead[3] && ((object) Reader.LocalName == (object)id71_node && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@node = Reader.Value;
++ paramsRead[3] = true;
++ }
++ else if (!paramsRead[4] && ((object) Reader.LocalName == (object)id114_formula && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@formula = Reader.Value;
++ paramsRead[4] = true;
++ }
++ else if (!paramsRead[5] && ((object) Reader.LocalName == (object)id33_type && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@type1 = Reader.Value;
++ paramsRead[5] = true;
++ }
++ else if (!paramsRead[6] && ((object) Reader.LocalName == (object)id118_length && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@length = CollapseWhitespace(Reader.Value);
++ paramsRead[6] = true;
++ }
++ else if (!paramsRead[7] && ((object) Reader.LocalName == (object)id119_precision && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@precision = CollapseWhitespace(Reader.Value);
++ paramsRead[7] = true;
++ }
++ else if (!paramsRead[8] && ((object) Reader.LocalName == (object)id120_scale && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@scale = CollapseWhitespace(Reader.Value);
++ paramsRead[8] = true;
++ }
++ else if (!paramsRead[9] && ((object) Reader.LocalName == (object)id121_notnull && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@notnull = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[9] = true;
++ }
++ else if (!paramsRead[10] && ((object) Reader.LocalName == (object)id116_unique && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@unique = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[10] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":column, :node, :formula, :type, :length, :precision, :scale, :not-null, :unique");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@Items = (global::System.Object[])ShrinkArray(a_0, ca_0, typeof(global::System.Object), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations40 = 0;
++ int readerCount40 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ if (((object) Reader.LocalName == (object)id114_formula && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::System.Object[])EnsureArrayIndex(a_0, ca_0, typeof(global::System.Object));a_0[ca_0++] = Read24_HbmFormula(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id55_column && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::System.Object[])EnsureArrayIndex(a_0, ca_0, typeof(global::System.Object));a_0[ca_0++] = Read13_HbmColumn(false, true);
++ }
++ else if (!paramsRead[1] && ((object) Reader.LocalName == (object)id33_type && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@type = Read15_HbmType(false, true);
++ paramsRead[1] = true;
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:formula, urn:nhibernate-mapping-2.2:column, urn:nhibernate-mapping-2.2:type");
++ }
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:formula, urn:nhibernate-mapping-2.2:column, urn:nhibernate-mapping-2.2:type");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations40, ref readerCount40);
++ }
++ o.@Items = (global::System.Object[])ShrinkArray(a_0, ca_0, typeof(global::System.Object), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmManyToAny Read40_HbmManyToAny(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmManyToAny o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmManyToAny();
++ global::NHibernate.Cfg.MappingSchema.HbmMetaValue[] a_0 = null;
++ int ca_0 = 0;
++ global::NHibernate.Cfg.MappingSchema.HbmColumn[] a_1 = null;
++ int ca_1 = 0;
++ bool[] paramsRead = new bool[5];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[2] && ((object) Reader.LocalName == (object)id55_column && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@column1 = Reader.Value;
++ paramsRead[2] = true;
++ }
++ else if (!paramsRead[3] && ((object) Reader.LocalName == (object)id132_idtype && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@idtype = Reader.Value;
++ paramsRead[3] = true;
++ }
++ else if (!paramsRead[4] && ((object) Reader.LocalName == (object)id133_metatype && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@metatype = Reader.Value;
++ paramsRead[4] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":column, :id-type, :meta-type");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@metavalue = (global::NHibernate.Cfg.MappingSchema.HbmMetaValue[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMetaValue), true);
++ o.@column = (global::NHibernate.Cfg.MappingSchema.HbmColumn[])ShrinkArray(a_1, ca_1, typeof(global::NHibernate.Cfg.MappingSchema.HbmColumn), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations41 = 0;
++ int readerCount41 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ if (((object) Reader.LocalName == (object)id134_metavalue && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::NHibernate.Cfg.MappingSchema.HbmMetaValue[])EnsureArrayIndex(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMetaValue));a_0[ca_0++] = Read35_HbmMetaValue(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id55_column && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_1 = (global::NHibernate.Cfg.MappingSchema.HbmColumn[])EnsureArrayIndex(a_1, ca_1, typeof(global::NHibernate.Cfg.MappingSchema.HbmColumn));a_1[ca_1++] = Read13_HbmColumn(false, true);
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:meta-value, urn:nhibernate-mapping-2.2:column");
++ }
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:meta-value, urn:nhibernate-mapping-2.2:column");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations41, ref readerCount41);
++ }
++ o.@metavalue = (global::NHibernate.Cfg.MappingSchema.HbmMetaValue[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMetaValue), true);
++ o.@column = (global::NHibernate.Cfg.MappingSchema.HbmColumn[])ShrinkArray(a_1, ca_1, typeof(global::NHibernate.Cfg.MappingSchema.HbmColumn), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmKey Read31_HbmKey(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmKey o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmKey();
++ global::NHibernate.Cfg.MappingSchema.HbmColumn[] a_0 = null;
++ int ca_0 = 0;
++ bool[] paramsRead = new bool[8];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[1] && ((object) Reader.LocalName == (object)id55_column && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@column1 = Reader.Value;
++ paramsRead[1] = true;
++ }
++ else if (!paramsRead[2] && ((object) Reader.LocalName == (object)id117_propertyref && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@propertyref = Reader.Value;
++ paramsRead[2] = true;
++ }
++ else if (!paramsRead[3] && ((object) Reader.LocalName == (object)id115_foreignkey && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@foreignkey = Reader.Value;
++ paramsRead[3] = true;
++ }
++ else if (!paramsRead[4] && ((object) Reader.LocalName == (object)id137_ondelete && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@ondelete = Read30_HbmOndelete(Reader.Value);
++ paramsRead[4] = true;
++ }
++ else if (!paramsRead[5] && ((object) Reader.LocalName == (object)id121_notnull && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@notnull = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ o.@notnullSpecified = true;
++ paramsRead[5] = true;
++ }
++ else if (!paramsRead[6] && ((object) Reader.LocalName == (object)id130_update && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@update = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ o.@updateSpecified = true;
++ paramsRead[6] = true;
++ }
++ else if (!paramsRead[7] && ((object) Reader.LocalName == (object)id116_unique && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@unique = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ o.@uniqueSpecified = true;
++ paramsRead[7] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":column, :property-ref, :foreign-key, :on-delete, :not-null, :update, :unique");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@column = (global::NHibernate.Cfg.MappingSchema.HbmColumn[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmColumn), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations42 = 0;
++ int readerCount42 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ if (((object) Reader.LocalName == (object)id55_column && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::NHibernate.Cfg.MappingSchema.HbmColumn[])EnsureArrayIndex(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmColumn));a_0[ca_0++] = Read13_HbmColumn(false, true);
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:column");
++ }
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:column");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations42, ref readerCount42);
++ }
++ o.@column = (global::NHibernate.Cfg.MappingSchema.HbmColumn[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmColumn), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmOndelete Read30_HbmOndelete(string s) {
++ switch (s) {
++ case @"cascade": return global::NHibernate.Cfg.MappingSchema.HbmOndelete.@Cascade;
++ case @"noaction": return global::NHibernate.Cfg.MappingSchema.HbmOndelete.@Noaction;
++ default: throw CreateUnknownConstantException(s, typeof(global::NHibernate.Cfg.MappingSchema.HbmOndelete));
++ }
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmCache Read8_HbmCache(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmCache o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmCache();
++ bool[] paramsRead = new bool[3];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[0] && ((object) Reader.LocalName == (object)id138_usage && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@usage = Read6_HbmCacheUsage(Reader.Value);
++ paramsRead[0] = true;
++ }
++ else if (!paramsRead[1] && ((object) Reader.LocalName == (object)id139_region && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@region = Reader.Value;
++ paramsRead[1] = true;
++ }
++ else if (!paramsRead[2] && ((object) Reader.LocalName == (object)id140_include && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@include = Read7_HbmCacheInclude(Reader.Value);
++ paramsRead[2] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":usage, :region, :include");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations43 = 0;
++ int readerCount43 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ UnknownNode((object)o, @"");
++ }
++ else {
++ UnknownNode((object)o, @"");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations43, ref readerCount43);
++ }
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmCacheInclude Read7_HbmCacheInclude(string s) {
++ switch (s) {
++ case @"all": return global::NHibernate.Cfg.MappingSchema.HbmCacheInclude.@All;
++ case @"non-lazy": return global::NHibernate.Cfg.MappingSchema.HbmCacheInclude.@NonLazy;
++ default: throw CreateUnknownConstantException(s, typeof(global::NHibernate.Cfg.MappingSchema.HbmCacheInclude));
++ }
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmCacheUsage Read6_HbmCacheUsage(string s) {
++ switch (s) {
++ case @"read-only": return global::NHibernate.Cfg.MappingSchema.HbmCacheUsage.@ReadOnly;
++ case @"read-write": return global::NHibernate.Cfg.MappingSchema.HbmCacheUsage.@ReadWrite;
++ case @"nonstrict-read-write": return global::NHibernate.Cfg.MappingSchema.HbmCacheUsage.@NonstrictReadWrite;
++ case @"transactional": return global::NHibernate.Cfg.MappingSchema.HbmCacheUsage.@Transactional;
++ default: throw CreateUnknownConstantException(s, typeof(global::NHibernate.Cfg.MappingSchema.HbmCacheUsage));
++ }
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmSubselect Read5_HbmSubselect(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmSubselect o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmSubselect();
++ global::System.String[] a_0 = null;
++ int ca_0 = 0;
++ bool[] paramsRead = new bool[1];
++ while (Reader.MoveToNextAttribute()) {
++ if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o);
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@Text = (global::System.String[])ShrinkArray(a_0, ca_0, typeof(global::System.String), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations44 = 0;
++ int readerCount44 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ string tmp = null;
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ UnknownNode((object)o, @"");
++ }
++ else if (Reader.NodeType == System.Xml.XmlNodeType.Text ||
++ Reader.NodeType == System.Xml.XmlNodeType.CDATA ||
++ Reader.NodeType == System.Xml.XmlNodeType.Whitespace ||
++ Reader.NodeType == System.Xml.XmlNodeType.SignificantWhitespace) {
++ a_0 = (global::System.String[])EnsureArrayIndex(a_0, ca_0, typeof(global::System.String));a_0[ca_0++] = Reader.ReadString();
++ }
++ else {
++ UnknownNode((object)o, @"");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations44, ref readerCount44);
++ }
++ o.@Text = (global::System.String[])ShrinkArray(a_0, ca_0, typeof(global::System.String), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmCollectionFetchMode Read48_HbmCollectionFetchMode(string s) {
++ switch (s) {
++ case @"select": return global::NHibernate.Cfg.MappingSchema.HbmCollectionFetchMode.@Select;
++ case @"join": return global::NHibernate.Cfg.MappingSchema.HbmCollectionFetchMode.@Join;
++ case @"subselect": return global::NHibernate.Cfg.MappingSchema.HbmCollectionFetchMode.@Subselect;
++ default: throw CreateUnknownConstantException(s, typeof(global::NHibernate.Cfg.MappingSchema.HbmCollectionFetchMode));
++ }
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmCollectionLazy Read47_HbmCollectionLazy(string s) {
++ switch (s) {
++ case @"true": return global::NHibernate.Cfg.MappingSchema.HbmCollectionLazy.@True;
++ case @"false": return global::NHibernate.Cfg.MappingSchema.HbmCollectionLazy.@False;
++ case @"extra": return global::NHibernate.Cfg.MappingSchema.HbmCollectionLazy.@Extra;
++ default: throw CreateUnknownConstantException(s, typeof(global::NHibernate.Cfg.MappingSchema.HbmCollectionLazy));
++ }
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmArray Read60_HbmArray(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmArray o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmArray();
++ global::NHibernate.Cfg.MappingSchema.HbmMeta[] a_0 = null;
++ int ca_0 = 0;
++ global::NHibernate.Cfg.MappingSchema.HbmSynchronize[] a_3 = null;
++ int ca_3 = 0;
++ bool[] paramsRead = new bool[33];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[13] && ((object) Reader.LocalName == (object)id28_name && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@name = Reader.Value;
++ paramsRead[13] = true;
++ }
++ else if (!paramsRead[14] && ((object) Reader.LocalName == (object)id93_access && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@access = Reader.Value;
++ paramsRead[14] = true;
++ }
++ else if (!paramsRead[15] && ((object) Reader.LocalName == (object)id50_table && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@table = Reader.Value;
++ paramsRead[15] = true;
++ }
++ else if (!paramsRead[16] && ((object) Reader.LocalName == (object)id5_schema && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@schema = Reader.Value;
++ paramsRead[16] = true;
++ }
++ else if (!paramsRead[17] && ((object) Reader.LocalName == (object)id6_catalog && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@catalog = Reader.Value;
++ paramsRead[17] = true;
++ }
++ else if (!paramsRead[18] && ((object) Reader.LocalName == (object)id61_subselect && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@subselect1 = Reader.Value;
++ paramsRead[18] = true;
++ }
++ else if (!paramsRead[19] && ((object) Reader.LocalName == (object)id94_inverse && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@inverse = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[19] = true;
++ }
++ else if (!paramsRead[20] && ((object) Reader.LocalName == (object)id95_mutable && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@mutable = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[20] = true;
++ }
++ else if (!paramsRead[21] && ((object) Reader.LocalName == (object)id141_elementclass && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@elementclass = Reader.Value;
++ paramsRead[21] = true;
++ }
++ else if (!paramsRead[22] && ((object) Reader.LocalName == (object)id96_cascade && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@cascade = Reader.Value;
++ paramsRead[22] = true;
++ }
++ else if (!paramsRead[23] && ((object) Reader.LocalName == (object)id98_where && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@where = Reader.Value;
++ paramsRead[23] = true;
++ }
++ else if (!paramsRead[24] && ((object) Reader.LocalName == (object)id70_batchsize && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@batchsize = System.Xml.XmlConvert.ToInt32(Reader.Value);
++ o.@batchsizeSpecified = true;
++ paramsRead[24] = true;
++ }
++ else if (!paramsRead[25] && ((object) Reader.LocalName == (object)id99_outerjoin && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@outerjoin = Read26_HbmOuterJoinStrategy(Reader.Value);
++ o.@outerjoinSpecified = true;
++ paramsRead[25] = true;
++ }
++ else if (!paramsRead[26] && ((object) Reader.LocalName == (object)id100_fetch && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@fetch = Read48_HbmCollectionFetchMode(Reader.Value);
++ o.@fetchSpecified = true;
++ paramsRead[26] = true;
++ }
++ else if (!paramsRead[27] && ((object) Reader.LocalName == (object)id68_persister && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@persister = Reader.Value;
++ paramsRead[27] = true;
++ }
++ else if (!paramsRead[28] && ((object) Reader.LocalName == (object)id101_collectiontype && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@collectiontype = Reader.Value;
++ paramsRead[28] = true;
++ }
++ else if (!paramsRead[29] && ((object) Reader.LocalName == (object)id69_check && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@check = Reader.Value;
++ paramsRead[29] = true;
++ }
++ else if (!paramsRead[30] && ((object) Reader.LocalName == (object)id102_optimisticlock && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@optimisticlock = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[30] = true;
++ }
++ else if (!paramsRead[31] && ((object) Reader.LocalName == (object)id71_node && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@node = Reader.Value;
++ paramsRead[31] = true;
++ }
++ else if (!paramsRead[32] && ((object) Reader.LocalName == (object)id103_embedxml && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@embedxml = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[32] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":name, :access, :table, :schema, :catalog, :subselect, :inverse, :mutable, :element-class, :cascade, :where, :batch-size, :outer-join, :fetch, :persister, :collection-type, :check, :optimistic-lock, :node, :embed-xml");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@meta = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta), true);
++ o.@synchronize = (global::NHibernate.Cfg.MappingSchema.HbmSynchronize[])ShrinkArray(a_3, ca_3, typeof(global::NHibernate.Cfg.MappingSchema.HbmSynchronize), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations45 = 0;
++ int readerCount45 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ if (((object) Reader.LocalName == (object)id13_meta && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])EnsureArrayIndex(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta));a_0[ca_0++] = Read4_HbmMeta(false, true);
++ }
++ else if (!paramsRead[1] && ((object) Reader.LocalName == (object)id61_subselect && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@subselect = Read5_HbmSubselect(false, true);
++ paramsRead[1] = true;
++ }
++ else if (!paramsRead[2] && ((object) Reader.LocalName == (object)id105_cache && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@cache = Read8_HbmCache(false, true);
++ paramsRead[2] = true;
++ }
++ else if (((object) Reader.LocalName == (object)id49_synchronize && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_3 = (global::NHibernate.Cfg.MappingSchema.HbmSynchronize[])EnsureArrayIndex(a_3, ca_3, typeof(global::NHibernate.Cfg.MappingSchema.HbmSynchronize));a_3[ca_3++] = Read9_HbmSynchronize(false, true);
++ }
++ else if (!paramsRead[4] && ((object) Reader.LocalName == (object)id41_comment && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@comment = Read10_HbmComment(false, true);
++ paramsRead[4] = true;
++ }
++ else if (!paramsRead[5] && ((object) Reader.LocalName == (object)id73_key && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@key = Read31_HbmKey(false, true);
++ paramsRead[5] = true;
++ }
++ else if (!paramsRead[6] && ((object) Reader.LocalName == (object)id142_listindex && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@Item = Read59_HbmListIndex(false, true);
++ paramsRead[6] = true;
++ }
++ else if (!paramsRead[6] && ((object) Reader.LocalName == (object)id124_index && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@Item = Read55_HbmIndex(false, true);
++ paramsRead[6] = true;
++ }
++ else if (!paramsRead[7] && ((object) Reader.LocalName == (object)id109_manytomany && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@Item1 = Read42_HbmManyToMany(false, true);
++ paramsRead[7] = true;
++ }
++ else if (!paramsRead[7] && ((object) Reader.LocalName == (object)id110_onetomany && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@Item1 = Read43_HbmOneToMany(false, true);
++ paramsRead[7] = true;
++ }
++ else if (!paramsRead[7] && ((object) Reader.LocalName == (object)id107_element && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@Item1 = Read39_HbmElement(false, true);
++ paramsRead[7] = true;
++ }
++ else if (!paramsRead[7] && ((object) Reader.LocalName == (object)id106_manytoany && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@Item1 = Read40_HbmManyToAny(false, true);
++ paramsRead[7] = true;
++ }
++ else if (!paramsRead[7] && ((object) Reader.LocalName == (object)id108_compositeelement && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@Item1 = Read38_HbmCompositeElement(false, true);
++ paramsRead[7] = true;
++ }
++ else if (!paramsRead[8] && ((object) Reader.LocalName == (object)id87_loader && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@loader = Read44_HbmLoader(false, true);
++ paramsRead[8] = true;
++ }
++ else if (!paramsRead[9] && ((object) Reader.LocalName == (object)id88_sqlinsert && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@sqlinsert = Read46_HbmCustomSQL(false, true);
++ paramsRead[9] = true;
++ }
++ else if (!paramsRead[10] && ((object) Reader.LocalName == (object)id89_sqlupdate && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@sqlupdate = Read46_HbmCustomSQL(false, true);
++ paramsRead[10] = true;
++ }
++ else if (!paramsRead[11] && ((object) Reader.LocalName == (object)id90_sqldelete && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@sqldelete = Read46_HbmCustomSQL(false, true);
++ paramsRead[11] = true;
++ }
++ else if (!paramsRead[12] && ((object) Reader.LocalName == (object)id111_sqldeleteall && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@sqldeleteall = Read46_HbmCustomSQL(false, true);
++ paramsRead[12] = true;
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:meta, urn:nhibernate-mapping-2.2:subselect, urn:nhibernate-mapping-2.2:cache, urn:nhibernate-mapping-2.2:synchronize, urn:nhibernate-mapping-2.2:comment, urn:nhibernate-mapping-2.2:key, urn:nhibernate-mapping-2.2:list-index, urn:nhibernate-mapping-2.2:index, urn:nhibernate-mapping-2.2:many-to-many, urn:nhibernate-mapping-2.2:one-to-many, urn:nhibernate-mapping-2.2:element, urn:nhibernate-mapping-2.2:many-to-any, urn:nhibernate-mapping-2.2:composite-element, urn:nhibernate-mapping-2.2:loader, urn:nhibernate-mapping-2.2:sql-insert, urn:nhibernate-mapping-2.2:sql-update, urn:nhibernate-mapping-2.2:sql-delete, urn:nhibernate-mapping-2.2:sql-delete-all");
++ }
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:meta, urn:nhibernate-mapping-2.2:subselect, urn:nhibernate-mapping-2.2:cache, urn:nhibernate-mapping-2.2:synchronize, urn:nhibernate-mapping-2.2:comment, urn:nhibernate-mapping-2.2:key, urn:nhibernate-mapping-2.2:list-index, urn:nhibernate-mapping-2.2:index, urn:nhibernate-mapping-2.2:many-to-many, urn:nhibernate-mapping-2.2:one-to-many, urn:nhibernate-mapping-2.2:element, urn:nhibernate-mapping-2.2:many-to-any, urn:nhibernate-mapping-2.2:composite-element, urn:nhibernate-mapping-2.2:loader, urn:nhibernate-mapping-2.2:sql-insert, urn:nhibernate-mapping-2.2:sql-update, urn:nhibernate-mapping-2.2:sql-delete, urn:nhibernate-mapping-2.2:sql-delete-all");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations45, ref readerCount45);
++ }
++ o.@meta = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta), true);
++ o.@synchronize = (global::NHibernate.Cfg.MappingSchema.HbmSynchronize[])ShrinkArray(a_3, ca_3, typeof(global::NHibernate.Cfg.MappingSchema.HbmSynchronize), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmIndex Read55_HbmIndex(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmIndex o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmIndex();
++ global::NHibernate.Cfg.MappingSchema.HbmColumn[] a_0 = null;
++ int ca_0 = 0;
++ bool[] paramsRead = new bool[4];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[1] && ((object) Reader.LocalName == (object)id55_column && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@column1 = Reader.Value;
++ paramsRead[1] = true;
++ }
++ else if (!paramsRead[2] && ((object) Reader.LocalName == (object)id33_type && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@type = Reader.Value;
++ paramsRead[2] = true;
++ }
++ else if (!paramsRead[3] && ((object) Reader.LocalName == (object)id118_length && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@length = CollapseWhitespace(Reader.Value);
++ paramsRead[3] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":column, :type, :length");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@column = (global::NHibernate.Cfg.MappingSchema.HbmColumn[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmColumn), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations46 = 0;
++ int readerCount46 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ if (((object) Reader.LocalName == (object)id55_column && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::NHibernate.Cfg.MappingSchema.HbmColumn[])EnsureArrayIndex(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmColumn));a_0[ca_0++] = Read13_HbmColumn(false, true);
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:column");
++ }
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:column");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations46, ref readerCount46);
++ }
++ o.@column = (global::NHibernate.Cfg.MappingSchema.HbmColumn[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmColumn), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmListIndex Read59_HbmListIndex(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmListIndex o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmListIndex();
++ bool[] paramsRead = new bool[3];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[1] && ((object) Reader.LocalName == (object)id55_column && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@column1 = Reader.Value;
++ paramsRead[1] = true;
++ }
++ else if (!paramsRead[2] && ((object) Reader.LocalName == (object)id143_base && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@base = CollapseWhitespace(Reader.Value);
++ paramsRead[2] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":column, :base");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations47 = 0;
++ int readerCount47 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ if (!paramsRead[0] && ((object) Reader.LocalName == (object)id55_column && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@column = Read13_HbmColumn(false, true);
++ paramsRead[0] = true;
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:column");
++ }
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:column");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations47, ref readerCount47);
++ }
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmIdbag Read66_HbmIdbag(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmIdbag o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmIdbag();
++ global::NHibernate.Cfg.MappingSchema.HbmMeta[] a_0 = null;
++ int ca_0 = 0;
++ global::NHibernate.Cfg.MappingSchema.HbmSynchronize[] a_3 = null;
++ int ca_3 = 0;
++ global::NHibernate.Cfg.MappingSchema.HbmFilter[] a_13 = null;
++ int ca_13 = 0;
++ bool[] paramsRead = new bool[36];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[14] && ((object) Reader.LocalName == (object)id28_name && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@name = Reader.Value;
++ paramsRead[14] = true;
++ }
++ else if (!paramsRead[15] && ((object) Reader.LocalName == (object)id93_access && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@access = Reader.Value;
++ paramsRead[15] = true;
++ }
++ else if (!paramsRead[16] && ((object) Reader.LocalName == (object)id50_table && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@table = Reader.Value;
++ paramsRead[16] = true;
++ }
++ else if (!paramsRead[17] && ((object) Reader.LocalName == (object)id5_schema && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@schema = Reader.Value;
++ paramsRead[17] = true;
++ }
++ else if (!paramsRead[18] && ((object) Reader.LocalName == (object)id6_catalog && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@catalog = Reader.Value;
++ paramsRead[18] = true;
++ }
++ else if (!paramsRead[19] && ((object) Reader.LocalName == (object)id61_subselect && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@subselect1 = Reader.Value;
++ paramsRead[19] = true;
++ }
++ else if (!paramsRead[20] && ((object) Reader.LocalName == (object)id66_lazy && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@lazy = Read47_HbmCollectionLazy(Reader.Value);
++ o.@lazySpecified = true;
++ paramsRead[20] = true;
++ }
++ else if (!paramsRead[21] && ((object) Reader.LocalName == (object)id94_inverse && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@inverse = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[21] = true;
++ }
++ else if (!paramsRead[22] && ((object) Reader.LocalName == (object)id95_mutable && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@mutable = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[22] = true;
++ }
++ else if (!paramsRead[23] && ((object) Reader.LocalName == (object)id96_cascade && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@cascade = Reader.Value;
++ paramsRead[23] = true;
++ }
++ else if (!paramsRead[24] && ((object) Reader.LocalName == (object)id97_orderby && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@orderby = Reader.Value;
++ paramsRead[24] = true;
++ }
++ else if (!paramsRead[25] && ((object) Reader.LocalName == (object)id98_where && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@where = Reader.Value;
++ paramsRead[25] = true;
++ }
++ else if (!paramsRead[26] && ((object) Reader.LocalName == (object)id70_batchsize && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@batchsize = System.Xml.XmlConvert.ToInt32(Reader.Value);
++ o.@batchsizeSpecified = true;
++ paramsRead[26] = true;
++ }
++ else if (!paramsRead[27] && ((object) Reader.LocalName == (object)id99_outerjoin && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@outerjoin = Read26_HbmOuterJoinStrategy(Reader.Value);
++ o.@outerjoinSpecified = true;
++ paramsRead[27] = true;
++ }
++ else if (!paramsRead[28] && ((object) Reader.LocalName == (object)id100_fetch && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@fetch = Read48_HbmCollectionFetchMode(Reader.Value);
++ o.@fetchSpecified = true;
++ paramsRead[28] = true;
++ }
++ else if (!paramsRead[29] && ((object) Reader.LocalName == (object)id68_persister && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@persister = Reader.Value;
++ paramsRead[29] = true;
++ }
++ else if (!paramsRead[30] && ((object) Reader.LocalName == (object)id101_collectiontype && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@collectiontype = Reader.Value;
++ paramsRead[30] = true;
++ }
++ else if (!paramsRead[31] && ((object) Reader.LocalName == (object)id69_check && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@check = Reader.Value;
++ paramsRead[31] = true;
++ }
++ else if (!paramsRead[32] && ((object) Reader.LocalName == (object)id102_optimisticlock && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@optimisticlock = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[32] = true;
++ }
++ else if (!paramsRead[33] && ((object) Reader.LocalName == (object)id71_node && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@node = Reader.Value;
++ paramsRead[33] = true;
++ }
++ else if (!paramsRead[34] && ((object) Reader.LocalName == (object)id103_embedxml && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@embedxml = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[34] = true;
++ }
++ else if (!paramsRead[35] && ((object) Reader.LocalName == (object)id104_generic && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@generic = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ o.@genericSpecified = true;
++ paramsRead[35] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":name, :access, :table, :schema, :catalog, :subselect, :lazy, :inverse, :mutable, :cascade, :order-by, :where, :batch-size, :outer-join, :fetch, :persister, :collection-type, :check, :optimistic-lock, :node, :embed-xml, :generic");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@meta = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta), true);
++ o.@synchronize = (global::NHibernate.Cfg.MappingSchema.HbmSynchronize[])ShrinkArray(a_3, ca_3, typeof(global::NHibernate.Cfg.MappingSchema.HbmSynchronize), true);
++ o.@filter = (global::NHibernate.Cfg.MappingSchema.HbmFilter[])ShrinkArray(a_13, ca_13, typeof(global::NHibernate.Cfg.MappingSchema.HbmFilter), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations48 = 0;
++ int readerCount48 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ if (((object) Reader.LocalName == (object)id13_meta && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])EnsureArrayIndex(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta));a_0[ca_0++] = Read4_HbmMeta(false, true);
++ }
++ else if (!paramsRead[1] && ((object) Reader.LocalName == (object)id61_subselect && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@subselect = Read5_HbmSubselect(false, true);
++ paramsRead[1] = true;
++ }
++ else if (!paramsRead[2] && ((object) Reader.LocalName == (object)id105_cache && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@cache = Read8_HbmCache(false, true);
++ paramsRead[2] = true;
++ }
++ else if (((object) Reader.LocalName == (object)id49_synchronize && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_3 = (global::NHibernate.Cfg.MappingSchema.HbmSynchronize[])EnsureArrayIndex(a_3, ca_3, typeof(global::NHibernate.Cfg.MappingSchema.HbmSynchronize));a_3[ca_3++] = Read9_HbmSynchronize(false, true);
++ }
++ else if (!paramsRead[4] && ((object) Reader.LocalName == (object)id41_comment && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@comment = Read10_HbmComment(false, true);
++ paramsRead[4] = true;
++ }
++ else if (!paramsRead[5] && ((object) Reader.LocalName == (object)id144_collectionid && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@collectionid = Read65_HbmCollectionId(false, true);
++ paramsRead[5] = true;
++ }
++ else if (!paramsRead[6] && ((object) Reader.LocalName == (object)id73_key && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@key = Read31_HbmKey(false, true);
++ paramsRead[6] = true;
++ }
++ else if (!paramsRead[7] && ((object) Reader.LocalName == (object)id107_element && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@Item = Read39_HbmElement(false, true);
++ paramsRead[7] = true;
++ }
++ else if (!paramsRead[7] && ((object) Reader.LocalName == (object)id108_compositeelement && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@Item = Read38_HbmCompositeElement(false, true);
++ paramsRead[7] = true;
++ }
++ else if (!paramsRead[7] && ((object) Reader.LocalName == (object)id106_manytoany && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@Item = Read40_HbmManyToAny(false, true);
++ paramsRead[7] = true;
++ }
++ else if (!paramsRead[7] && ((object) Reader.LocalName == (object)id109_manytomany && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@Item = Read42_HbmManyToMany(false, true);
++ paramsRead[7] = true;
++ }
++ else if (!paramsRead[8] && ((object) Reader.LocalName == (object)id87_loader && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@loader = Read44_HbmLoader(false, true);
++ paramsRead[8] = true;
++ }
++ else if (!paramsRead[9] && ((object) Reader.LocalName == (object)id88_sqlinsert && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@sqlinsert = Read46_HbmCustomSQL(false, true);
++ paramsRead[9] = true;
++ }
++ else if (!paramsRead[10] && ((object) Reader.LocalName == (object)id89_sqlupdate && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@sqlupdate = Read46_HbmCustomSQL(false, true);
++ paramsRead[10] = true;
++ }
++ else if (!paramsRead[11] && ((object) Reader.LocalName == (object)id90_sqldelete && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@sqldelete = Read46_HbmCustomSQL(false, true);
++ paramsRead[11] = true;
++ }
++ else if (!paramsRead[12] && ((object) Reader.LocalName == (object)id111_sqldeleteall && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@sqldeleteall = Read46_HbmCustomSQL(false, true);
++ paramsRead[12] = true;
++ }
++ else if (((object) Reader.LocalName == (object)id112_filter && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_13 = (global::NHibernate.Cfg.MappingSchema.HbmFilter[])EnsureArrayIndex(a_13, ca_13, typeof(global::NHibernate.Cfg.MappingSchema.HbmFilter));a_13[ca_13++] = Read41_HbmFilter(false, true);
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:meta, urn:nhibernate-mapping-2.2:subselect, urn:nhibernate-mapping-2.2:cache, urn:nhibernate-mapping-2.2:synchronize, urn:nhibernate-mapping-2.2:comment, urn:nhibernate-mapping-2.2:collection-id, urn:nhibernate-mapping-2.2:key, urn:nhibernate-mapping-2.2:element, urn:nhibernate-mapping-2.2:composite-element, urn:nhibernate-mapping-2.2:many-to-any, urn:nhibernate-mapping-2.2:many-to-many, urn:nhibernate-mapping-2.2:loader, urn:nhibernate-mapping-2.2:sql-insert, urn:nhibernate-mapping-2.2:sql-update, urn:nhibernate-mapping-2.2:sql-delete, urn:nhibernate-mapping-2.2:sql-delete-all, urn:nhibernate-mapping-2.2:filter");
++ }
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:meta, urn:nhibernate-mapping-2.2:subselect, urn:nhibernate-mapping-2.2:cache, urn:nhibernate-mapping-2.2:synchronize, urn:nhibernate-mapping-2.2:comment, urn:nhibernate-mapping-2.2:collection-id, urn:nhibernate-mapping-2.2:key, urn:nhibernate-mapping-2.2:element, urn:nhibernate-mapping-2.2:composite-element, urn:nhibernate-mapping-2.2:many-to-any, urn:nhibernate-mapping-2.2:many-to-many, urn:nhibernate-mapping-2.2:loader, urn:nhibernate-mapping-2.2:sql-insert, urn:nhibernate-mapping-2.2:sql-update, urn:nhibernate-mapping-2.2:sql-delete, urn:nhibernate-mapping-2.2:sql-delete-all, urn:nhibernate-mapping-2.2:filter");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations48, ref readerCount48);
++ }
++ o.@meta = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta), true);
++ o.@synchronize = (global::NHibernate.Cfg.MappingSchema.HbmSynchronize[])ShrinkArray(a_3, ca_3, typeof(global::NHibernate.Cfg.MappingSchema.HbmSynchronize), true);
++ o.@filter = (global::NHibernate.Cfg.MappingSchema.HbmFilter[])ShrinkArray(a_13, ca_13, typeof(global::NHibernate.Cfg.MappingSchema.HbmFilter), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmCollectionId Read65_HbmCollectionId(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmCollectionId o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmCollectionId();
++ global::NHibernate.Cfg.MappingSchema.HbmMeta[] a_0 = null;
++ int ca_0 = 0;
++ global::NHibernate.Cfg.MappingSchema.HbmColumn[] a_1 = null;
++ int ca_1 = 0;
++ bool[] paramsRead = new bool[6];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[3] && ((object) Reader.LocalName == (object)id55_column && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@column1 = Reader.Value;
++ paramsRead[3] = true;
++ }
++ else if (!paramsRead[4] && ((object) Reader.LocalName == (object)id33_type && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@type = Reader.Value;
++ paramsRead[4] = true;
++ }
++ else if (!paramsRead[5] && ((object) Reader.LocalName == (object)id118_length && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@length = CollapseWhitespace(Reader.Value);
++ paramsRead[5] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":column, :type, :length");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@meta = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta), true);
++ o.@column = (global::NHibernate.Cfg.MappingSchema.HbmColumn[])ShrinkArray(a_1, ca_1, typeof(global::NHibernate.Cfg.MappingSchema.HbmColumn), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations49 = 0;
++ int readerCount49 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ if (((object) Reader.LocalName == (object)id13_meta && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])EnsureArrayIndex(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta));a_0[ca_0++] = Read4_HbmMeta(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id55_column && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_1 = (global::NHibernate.Cfg.MappingSchema.HbmColumn[])EnsureArrayIndex(a_1, ca_1, typeof(global::NHibernate.Cfg.MappingSchema.HbmColumn));a_1[ca_1++] = Read13_HbmColumn(false, true);
++ }
++ else if (!paramsRead[2] && ((object) Reader.LocalName == (object)id145_generator && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@generator = Read16_HbmGenerator(false, true);
++ paramsRead[2] = true;
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:meta, urn:nhibernate-mapping-2.2:column, urn:nhibernate-mapping-2.2:generator");
++ }
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:meta, urn:nhibernate-mapping-2.2:column, urn:nhibernate-mapping-2.2:generator");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations49, ref readerCount49);
++ }
++ o.@meta = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta), true);
++ o.@column = (global::NHibernate.Cfg.MappingSchema.HbmColumn[])ShrinkArray(a_1, ca_1, typeof(global::NHibernate.Cfg.MappingSchema.HbmColumn), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmGenerator Read16_HbmGenerator(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmGenerator o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmGenerator();
++ global::NHibernate.Cfg.MappingSchema.HbmParam[] a_0 = null;
++ int ca_0 = 0;
++ bool[] paramsRead = new bool[2];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[1] && ((object) Reader.LocalName == (object)id1_class && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@class = Reader.Value;
++ paramsRead[1] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":class");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@param = (global::NHibernate.Cfg.MappingSchema.HbmParam[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmParam), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations50 = 0;
++ int readerCount50 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ if (((object) Reader.LocalName == (object)id29_param && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::NHibernate.Cfg.MappingSchema.HbmParam[])EnsureArrayIndex(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmParam));a_0[ca_0++] = Read14_HbmParam(false, true);
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:param");
++ }
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:param");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations50, ref readerCount50);
++ }
++ o.@param = (global::NHibernate.Cfg.MappingSchema.HbmParam[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmParam), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmPrimitiveArray Read64_HbmPrimitiveArray(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmPrimitiveArray o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmPrimitiveArray();
++ global::NHibernate.Cfg.MappingSchema.HbmMeta[] a_0 = null;
++ int ca_0 = 0;
++ global::NHibernate.Cfg.MappingSchema.HbmSynchronize[] a_3 = null;
++ int ca_3 = 0;
++ bool[] paramsRead = new bool[30];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[13] && ((object) Reader.LocalName == (object)id28_name && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@name = Reader.Value;
++ paramsRead[13] = true;
++ }
++ else if (!paramsRead[14] && ((object) Reader.LocalName == (object)id93_access && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@access = Reader.Value;
++ paramsRead[14] = true;
++ }
++ else if (!paramsRead[15] && ((object) Reader.LocalName == (object)id50_table && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@table = Reader.Value;
++ paramsRead[15] = true;
++ }
++ else if (!paramsRead[16] && ((object) Reader.LocalName == (object)id5_schema && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@schema = Reader.Value;
++ paramsRead[16] = true;
++ }
++ else if (!paramsRead[17] && ((object) Reader.LocalName == (object)id6_catalog && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@catalog = Reader.Value;
++ paramsRead[17] = true;
++ }
++ else if (!paramsRead[18] && ((object) Reader.LocalName == (object)id61_subselect && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@subselect1 = Reader.Value;
++ paramsRead[18] = true;
++ }
++ else if (!paramsRead[19] && ((object) Reader.LocalName == (object)id95_mutable && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@mutable = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[19] = true;
++ }
++ else if (!paramsRead[20] && ((object) Reader.LocalName == (object)id98_where && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@where = Reader.Value;
++ paramsRead[20] = true;
++ }
++ else if (!paramsRead[21] && ((object) Reader.LocalName == (object)id70_batchsize && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@batchsize = CollapseWhitespace(Reader.Value);
++ paramsRead[21] = true;
++ }
++ else if (!paramsRead[22] && ((object) Reader.LocalName == (object)id99_outerjoin && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@outerjoin = Read62_HbmPrimitivearrayOuterjoin(Reader.Value);
++ o.@outerjoinSpecified = true;
++ paramsRead[22] = true;
++ }
++ else if (!paramsRead[23] && ((object) Reader.LocalName == (object)id100_fetch && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@fetch = Read63_HbmPrimitivearrayFetch(Reader.Value);
++ o.@fetchSpecified = true;
++ paramsRead[23] = true;
++ }
++ else if (!paramsRead[24] && ((object) Reader.LocalName == (object)id68_persister && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@persister = Reader.Value;
++ paramsRead[24] = true;
++ }
++ else if (!paramsRead[25] && ((object) Reader.LocalName == (object)id101_collectiontype && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@collectiontype = Reader.Value;
++ paramsRead[25] = true;
++ }
++ else if (!paramsRead[26] && ((object) Reader.LocalName == (object)id69_check && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@check = Reader.Value;
++ paramsRead[26] = true;
++ }
++ else if (!paramsRead[27] && ((object) Reader.LocalName == (object)id102_optimisticlock && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@optimisticlock = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[27] = true;
++ }
++ else if (!paramsRead[28] && ((object) Reader.LocalName == (object)id71_node && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@node = Reader.Value;
++ paramsRead[28] = true;
++ }
++ else if (!paramsRead[29] && ((object) Reader.LocalName == (object)id103_embedxml && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@embedxml = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[29] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":name, :access, :table, :schema, :catalog, :subselect, :mutable, :where, :batch-size, :outer-join, :fetch, :persister, :collection-type, :check, :optimistic-lock, :node, :embed-xml");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@meta = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta), true);
++ o.@synchronize = (global::NHibernate.Cfg.MappingSchema.HbmSynchronize[])ShrinkArray(a_3, ca_3, typeof(global::NHibernate.Cfg.MappingSchema.HbmSynchronize), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations51 = 0;
++ int readerCount51 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ if (((object) Reader.LocalName == (object)id13_meta && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])EnsureArrayIndex(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta));a_0[ca_0++] = Read4_HbmMeta(false, true);
++ }
++ else if (!paramsRead[1] && ((object) Reader.LocalName == (object)id61_subselect && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@subselect = Read5_HbmSubselect(false, true);
++ paramsRead[1] = true;
++ }
++ else if (!paramsRead[2] && ((object) Reader.LocalName == (object)id105_cache && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@cache = Read8_HbmCache(false, true);
++ paramsRead[2] = true;
++ }
++ else if (((object) Reader.LocalName == (object)id49_synchronize && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_3 = (global::NHibernate.Cfg.MappingSchema.HbmSynchronize[])EnsureArrayIndex(a_3, ca_3, typeof(global::NHibernate.Cfg.MappingSchema.HbmSynchronize));a_3[ca_3++] = Read9_HbmSynchronize(false, true);
++ }
++ else if (!paramsRead[4] && ((object) Reader.LocalName == (object)id41_comment && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@comment = Read10_HbmComment(false, true);
++ paramsRead[4] = true;
++ }
++ else if (!paramsRead[5] && ((object) Reader.LocalName == (object)id73_key && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@key = Read31_HbmKey(false, true);
++ paramsRead[5] = true;
++ }
++ else if (!paramsRead[6] && ((object) Reader.LocalName == (object)id142_listindex && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@Item = Read59_HbmListIndex(false, true);
++ paramsRead[6] = true;
++ }
++ else if (!paramsRead[6] && ((object) Reader.LocalName == (object)id124_index && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@Item = Read55_HbmIndex(false, true);
++ paramsRead[6] = true;
++ }
++ else if (!paramsRead[7] && ((object) Reader.LocalName == (object)id107_element && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@element = Read39_HbmElement(false, true);
++ paramsRead[7] = true;
++ }
++ else if (!paramsRead[8] && ((object) Reader.LocalName == (object)id87_loader && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@loader = Read44_HbmLoader(false, true);
++ paramsRead[8] = true;
++ }
++ else if (!paramsRead[9] && ((object) Reader.LocalName == (object)id88_sqlinsert && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@sqlinsert = Read46_HbmCustomSQL(false, true);
++ paramsRead[9] = true;
++ }
++ else if (!paramsRead[10] && ((object) Reader.LocalName == (object)id89_sqlupdate && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@sqlupdate = Read46_HbmCustomSQL(false, true);
++ paramsRead[10] = true;
++ }
++ else if (!paramsRead[11] && ((object) Reader.LocalName == (object)id90_sqldelete && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@sqldelete = Read46_HbmCustomSQL(false, true);
++ paramsRead[11] = true;
++ }
++ else if (!paramsRead[12] && ((object) Reader.LocalName == (object)id111_sqldeleteall && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@sqldeleteall = Read46_HbmCustomSQL(false, true);
++ paramsRead[12] = true;
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:meta, urn:nhibernate-mapping-2.2:subselect, urn:nhibernate-mapping-2.2:cache, urn:nhibernate-mapping-2.2:synchronize, urn:nhibernate-mapping-2.2:comment, urn:nhibernate-mapping-2.2:key, urn:nhibernate-mapping-2.2:list-index, urn:nhibernate-mapping-2.2:index, urn:nhibernate-mapping-2.2:element, urn:nhibernate-mapping-2.2:loader, urn:nhibernate-mapping-2.2:sql-insert, urn:nhibernate-mapping-2.2:sql-update, urn:nhibernate-mapping-2.2:sql-delete, urn:nhibernate-mapping-2.2:sql-delete-all");
++ }
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:meta, urn:nhibernate-mapping-2.2:subselect, urn:nhibernate-mapping-2.2:cache, urn:nhibernate-mapping-2.2:synchronize, urn:nhibernate-mapping-2.2:comment, urn:nhibernate-mapping-2.2:key, urn:nhibernate-mapping-2.2:list-index, urn:nhibernate-mapping-2.2:index, urn:nhibernate-mapping-2.2:element, urn:nhibernate-mapping-2.2:loader, urn:nhibernate-mapping-2.2:sql-insert, urn:nhibernate-mapping-2.2:sql-update, urn:nhibernate-mapping-2.2:sql-delete, urn:nhibernate-mapping-2.2:sql-delete-all");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations51, ref readerCount51);
++ }
++ o.@meta = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta), true);
++ o.@synchronize = (global::NHibernate.Cfg.MappingSchema.HbmSynchronize[])ShrinkArray(a_3, ca_3, typeof(global::NHibernate.Cfg.MappingSchema.HbmSynchronize), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmPrimitivearrayFetch Read63_HbmPrimitivearrayFetch(string s) {
++ switch (s) {
++ case @"join": return global::NHibernate.Cfg.MappingSchema.HbmPrimitivearrayFetch.@Join;
++ case @"select": return global::NHibernate.Cfg.MappingSchema.HbmPrimitivearrayFetch.@Select;
++ case @"subselect": return global::NHibernate.Cfg.MappingSchema.HbmPrimitivearrayFetch.@Subselect;
++ default: throw CreateUnknownConstantException(s, typeof(global::NHibernate.Cfg.MappingSchema.HbmPrimitivearrayFetch));
++ }
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmPrimitivearrayOuterjoin Read62_HbmPrimitivearrayOuterjoin(string s) {
++ switch (s) {
++ case @"true": return global::NHibernate.Cfg.MappingSchema.HbmPrimitivearrayOuterjoin.@True;
++ case @"false": return global::NHibernate.Cfg.MappingSchema.HbmPrimitivearrayOuterjoin.@False;
++ case @"auto": return global::NHibernate.Cfg.MappingSchema.HbmPrimitivearrayOuterjoin.@Auto;
++ default: throw CreateUnknownConstantException(s, typeof(global::NHibernate.Cfg.MappingSchema.HbmPrimitivearrayOuterjoin));
++ }
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmSet Read49_HbmSet(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmSet o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmSet();
++ global::NHibernate.Cfg.MappingSchema.HbmMeta[] a_0 = null;
++ int ca_0 = 0;
++ global::NHibernate.Cfg.MappingSchema.HbmSynchronize[] a_3 = null;
++ int ca_3 = 0;
++ global::NHibernate.Cfg.MappingSchema.HbmFilter[] a_12 = null;
++ int ca_12 = 0;
++ bool[] paramsRead = new bool[36];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[13] && ((object) Reader.LocalName == (object)id28_name && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@name = Reader.Value;
++ paramsRead[13] = true;
++ }
++ else if (!paramsRead[14] && ((object) Reader.LocalName == (object)id93_access && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@access = Reader.Value;
++ paramsRead[14] = true;
++ }
++ else if (!paramsRead[15] && ((object) Reader.LocalName == (object)id50_table && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@table = Reader.Value;
++ paramsRead[15] = true;
++ }
++ else if (!paramsRead[16] && ((object) Reader.LocalName == (object)id5_schema && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@schema = Reader.Value;
++ paramsRead[16] = true;
++ }
++ else if (!paramsRead[17] && ((object) Reader.LocalName == (object)id6_catalog && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@catalog = Reader.Value;
++ paramsRead[17] = true;
++ }
++ else if (!paramsRead[18] && ((object) Reader.LocalName == (object)id61_subselect && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@subselect1 = Reader.Value;
++ paramsRead[18] = true;
++ }
++ else if (!paramsRead[19] && ((object) Reader.LocalName == (object)id66_lazy && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@lazy = Read47_HbmCollectionLazy(Reader.Value);
++ o.@lazySpecified = true;
++ paramsRead[19] = true;
++ }
++ else if (!paramsRead[20] && ((object) Reader.LocalName == (object)id94_inverse && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@inverse = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[20] = true;
++ }
++ else if (!paramsRead[21] && ((object) Reader.LocalName == (object)id95_mutable && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@mutable = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[21] = true;
++ }
++ else if (!paramsRead[22] && ((object) Reader.LocalName == (object)id96_cascade && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@cascade = Reader.Value;
++ paramsRead[22] = true;
++ }
++ else if (!paramsRead[23] && ((object) Reader.LocalName == (object)id97_orderby && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@orderby = Reader.Value;
++ paramsRead[23] = true;
++ }
++ else if (!paramsRead[24] && ((object) Reader.LocalName == (object)id98_where && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@where = Reader.Value;
++ paramsRead[24] = true;
++ }
++ else if (!paramsRead[25] && ((object) Reader.LocalName == (object)id70_batchsize && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@batchsize = System.Xml.XmlConvert.ToInt32(Reader.Value);
++ o.@batchsizeSpecified = true;
++ paramsRead[25] = true;
++ }
++ else if (!paramsRead[26] && ((object) Reader.LocalName == (object)id99_outerjoin && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@outerjoin = Read26_HbmOuterJoinStrategy(Reader.Value);
++ o.@outerjoinSpecified = true;
++ paramsRead[26] = true;
++ }
++ else if (!paramsRead[27] && ((object) Reader.LocalName == (object)id100_fetch && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@fetch = Read48_HbmCollectionFetchMode(Reader.Value);
++ o.@fetchSpecified = true;
++ paramsRead[27] = true;
++ }
++ else if (!paramsRead[28] && ((object) Reader.LocalName == (object)id68_persister && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@persister = Reader.Value;
++ paramsRead[28] = true;
++ }
++ else if (!paramsRead[29] && ((object) Reader.LocalName == (object)id101_collectiontype && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@collectiontype = Reader.Value;
++ paramsRead[29] = true;
++ }
++ else if (!paramsRead[30] && ((object) Reader.LocalName == (object)id69_check && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@check = Reader.Value;
++ paramsRead[30] = true;
++ }
++ else if (!paramsRead[31] && ((object) Reader.LocalName == (object)id102_optimisticlock && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@optimisticlock = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[31] = true;
++ }
++ else if (!paramsRead[32] && ((object) Reader.LocalName == (object)id71_node && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@node = Reader.Value;
++ paramsRead[32] = true;
++ }
++ else if (!paramsRead[33] && ((object) Reader.LocalName == (object)id103_embedxml && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@embedxml = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[33] = true;
++ }
++ else if (!paramsRead[34] && ((object) Reader.LocalName == (object)id104_generic && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@generic = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ o.@genericSpecified = true;
++ paramsRead[34] = true;
++ }
++ else if (!paramsRead[35] && ((object) Reader.LocalName == (object)id146_sort && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@sort = Reader.Value;
++ paramsRead[35] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":name, :access, :table, :schema, :catalog, :subselect, :lazy, :inverse, :mutable, :cascade, :order-by, :where, :batch-size, :outer-join, :fetch, :persister, :collection-type, :check, :optimistic-lock, :node, :embed-xml, :generic, :sort");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@meta = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta), true);
++ o.@synchronize = (global::NHibernate.Cfg.MappingSchema.HbmSynchronize[])ShrinkArray(a_3, ca_3, typeof(global::NHibernate.Cfg.MappingSchema.HbmSynchronize), true);
++ o.@filter = (global::NHibernate.Cfg.MappingSchema.HbmFilter[])ShrinkArray(a_12, ca_12, typeof(global::NHibernate.Cfg.MappingSchema.HbmFilter), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations52 = 0;
++ int readerCount52 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ if (((object) Reader.LocalName == (object)id13_meta && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])EnsureArrayIndex(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta));a_0[ca_0++] = Read4_HbmMeta(false, true);
++ }
++ else if (!paramsRead[1] && ((object) Reader.LocalName == (object)id61_subselect && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@subselect = Read5_HbmSubselect(false, true);
++ paramsRead[1] = true;
++ }
++ else if (!paramsRead[2] && ((object) Reader.LocalName == (object)id105_cache && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@cache = Read8_HbmCache(false, true);
++ paramsRead[2] = true;
++ }
++ else if (((object) Reader.LocalName == (object)id49_synchronize && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_3 = (global::NHibernate.Cfg.MappingSchema.HbmSynchronize[])EnsureArrayIndex(a_3, ca_3, typeof(global::NHibernate.Cfg.MappingSchema.HbmSynchronize));a_3[ca_3++] = Read9_HbmSynchronize(false, true);
++ }
++ else if (!paramsRead[4] && ((object) Reader.LocalName == (object)id41_comment && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@comment = Read10_HbmComment(false, true);
++ paramsRead[4] = true;
++ }
++ else if (!paramsRead[5] && ((object) Reader.LocalName == (object)id73_key && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@key = Read31_HbmKey(false, true);
++ paramsRead[5] = true;
++ }
++ else if (!paramsRead[6] && ((object) Reader.LocalName == (object)id108_compositeelement && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@Item = Read38_HbmCompositeElement(false, true);
++ paramsRead[6] = true;
++ }
++ else if (!paramsRead[6] && ((object) Reader.LocalName == (object)id107_element && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@Item = Read39_HbmElement(false, true);
++ paramsRead[6] = true;
++ }
++ else if (!paramsRead[6] && ((object) Reader.LocalName == (object)id106_manytoany && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@Item = Read40_HbmManyToAny(false, true);
++ paramsRead[6] = true;
++ }
++ else if (!paramsRead[6] && ((object) Reader.LocalName == (object)id109_manytomany && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@Item = Read42_HbmManyToMany(false, true);
++ paramsRead[6] = true;
++ }
++ else if (!paramsRead[6] && ((object) Reader.LocalName == (object)id110_onetomany && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@Item = Read43_HbmOneToMany(false, true);
++ paramsRead[6] = true;
++ }
++ else if (!paramsRead[7] && ((object) Reader.LocalName == (object)id87_loader && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@loader = Read44_HbmLoader(false, true);
++ paramsRead[7] = true;
++ }
++ else if (!paramsRead[8] && ((object) Reader.LocalName == (object)id88_sqlinsert && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@sqlinsert = Read46_HbmCustomSQL(false, true);
++ paramsRead[8] = true;
++ }
++ else if (!paramsRead[9] && ((object) Reader.LocalName == (object)id89_sqlupdate && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@sqlupdate = Read46_HbmCustomSQL(false, true);
++ paramsRead[9] = true;
++ }
++ else if (!paramsRead[10] && ((object) Reader.LocalName == (object)id90_sqldelete && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@sqldelete = Read46_HbmCustomSQL(false, true);
++ paramsRead[10] = true;
++ }
++ else if (!paramsRead[11] && ((object) Reader.LocalName == (object)id111_sqldeleteall && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@sqldeleteall = Read46_HbmCustomSQL(false, true);
++ paramsRead[11] = true;
++ }
++ else if (((object) Reader.LocalName == (object)id112_filter && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_12 = (global::NHibernate.Cfg.MappingSchema.HbmFilter[])EnsureArrayIndex(a_12, ca_12, typeof(global::NHibernate.Cfg.MappingSchema.HbmFilter));a_12[ca_12++] = Read41_HbmFilter(false, true);
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:meta, urn:nhibernate-mapping-2.2:subselect, urn:nhibernate-mapping-2.2:cache, urn:nhibernate-mapping-2.2:synchronize, urn:nhibernate-mapping-2.2:comment, urn:nhibernate-mapping-2.2:key, urn:nhibernate-mapping-2.2:composite-element, urn:nhibernate-mapping-2.2:element, urn:nhibernate-mapping-2.2:many-to-any, urn:nhibernate-mapping-2.2:many-to-many, urn:nhibernate-mapping-2.2:one-to-many, urn:nhibernate-mapping-2.2:loader, urn:nhibernate-mapping-2.2:sql-insert, urn:nhibernate-mapping-2.2:sql-update, urn:nhibernate-mapping-2.2:sql-delete, urn:nhibernate-mapping-2.2:sql-delete-all, urn:nhibernate-mapping-2.2:filter");
++ }
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:meta, urn:nhibernate-mapping-2.2:subselect, urn:nhibernate-mapping-2.2:cache, urn:nhibernate-mapping-2.2:synchronize, urn:nhibernate-mapping-2.2:comment, urn:nhibernate-mapping-2.2:key, urn:nhibernate-mapping-2.2:composite-element, urn:nhibernate-mapping-2.2:element, urn:nhibernate-mapping-2.2:many-to-any, urn:nhibernate-mapping-2.2:many-to-many, urn:nhibernate-mapping-2.2:one-to-many, urn:nhibernate-mapping-2.2:loader, urn:nhibernate-mapping-2.2:sql-insert, urn:nhibernate-mapping-2.2:sql-update, urn:nhibernate-mapping-2.2:sql-delete, urn:nhibernate-mapping-2.2:sql-delete-all, urn:nhibernate-mapping-2.2:filter");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations52, ref readerCount52);
++ }
++ o.@meta = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta), true);
++ o.@synchronize = (global::NHibernate.Cfg.MappingSchema.HbmSynchronize[])ShrinkArray(a_3, ca_3, typeof(global::NHibernate.Cfg.MappingSchema.HbmSynchronize), true);
++ o.@filter = (global::NHibernate.Cfg.MappingSchema.HbmFilter[])ShrinkArray(a_12, ca_12, typeof(global::NHibernate.Cfg.MappingSchema.HbmFilter), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmOneToOne Read61_HbmOneToOne(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmOneToOne o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmOneToOne();
++ global::NHibernate.Cfg.MappingSchema.HbmMeta[] a_0 = null;
++ int ca_0 = 0;
++ global::NHibernate.Cfg.MappingSchema.HbmFormula[] a_1 = null;
++ int ca_1 = 0;
++ bool[] paramsRead = new bool[16];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[2] && ((object) Reader.LocalName == (object)id28_name && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@name = Reader.Value;
++ paramsRead[2] = true;
++ }
++ else if (!paramsRead[3] && ((object) Reader.LocalName == (object)id114_formula && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@formula1 = Reader.Value;
++ paramsRead[3] = true;
++ }
++ else if (!paramsRead[4] && ((object) Reader.LocalName == (object)id93_access && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@access = Reader.Value;
++ paramsRead[4] = true;
++ }
++ else if (!paramsRead[5] && ((object) Reader.LocalName == (object)id1_class && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@class = Reader.Value;
++ paramsRead[5] = true;
++ }
++ else if (!paramsRead[6] && ((object) Reader.LocalName == (object)id57_entityname && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@entityname = Reader.Value;
++ paramsRead[6] = true;
++ }
++ else if (!paramsRead[7] && ((object) Reader.LocalName == (object)id96_cascade && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@cascade = Reader.Value;
++ paramsRead[7] = true;
++ }
++ else if (!paramsRead[8] && ((object) Reader.LocalName == (object)id99_outerjoin && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@outerjoin = Read26_HbmOuterJoinStrategy(Reader.Value);
++ o.@outerjoinSpecified = true;
++ paramsRead[8] = true;
++ }
++ else if (!paramsRead[9] && ((object) Reader.LocalName == (object)id100_fetch && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@fetch = Read27_HbmFetchMode(Reader.Value);
++ o.@fetchSpecified = true;
++ paramsRead[9] = true;
++ }
++ else if (!paramsRead[10] && ((object) Reader.LocalName == (object)id147_constrained && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@constrained = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[10] = true;
++ }
++ else if (!paramsRead[11] && ((object) Reader.LocalName == (object)id115_foreignkey && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@foreignkey = Reader.Value;
++ paramsRead[11] = true;
++ }
++ else if (!paramsRead[12] && ((object) Reader.LocalName == (object)id117_propertyref && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@propertyref = Reader.Value;
++ paramsRead[12] = true;
++ }
++ else if (!paramsRead[13] && ((object) Reader.LocalName == (object)id66_lazy && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@lazy = Read28_HbmLaziness(Reader.Value);
++ o.@lazySpecified = true;
++ paramsRead[13] = true;
++ }
++ else if (!paramsRead[14] && ((object) Reader.LocalName == (object)id71_node && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@node = Reader.Value;
++ paramsRead[14] = true;
++ }
++ else if (!paramsRead[15] && ((object) Reader.LocalName == (object)id103_embedxml && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@embedxml = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[15] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":name, :formula, :access, :class, :entity-name, :cascade, :outer-join, :fetch, :constrained, :foreign-key, :property-ref, :lazy, :node, :embed-xml");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@meta = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta), true);
++ o.@formula = (global::NHibernate.Cfg.MappingSchema.HbmFormula[])ShrinkArray(a_1, ca_1, typeof(global::NHibernate.Cfg.MappingSchema.HbmFormula), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations53 = 0;
++ int readerCount53 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ if (((object) Reader.LocalName == (object)id13_meta && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])EnsureArrayIndex(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta));a_0[ca_0++] = Read4_HbmMeta(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id114_formula && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_1 = (global::NHibernate.Cfg.MappingSchema.HbmFormula[])EnsureArrayIndex(a_1, ca_1, typeof(global::NHibernate.Cfg.MappingSchema.HbmFormula));a_1[ca_1++] = Read24_HbmFormula(false, true);
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:meta, urn:nhibernate-mapping-2.2:formula");
++ }
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:meta, urn:nhibernate-mapping-2.2:formula");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations53, ref readerCount53);
++ }
++ o.@meta = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta), true);
++ o.@formula = (global::NHibernate.Cfg.MappingSchema.HbmFormula[])ShrinkArray(a_1, ca_1, typeof(global::NHibernate.Cfg.MappingSchema.HbmFormula), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmProperties Read76_HbmProperties(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmProperties o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmProperties();
++ global::System.Object[] a_0 = null;
++ int ca_0 = 0;
++ bool[] paramsRead = new bool[7];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[1] && ((object) Reader.LocalName == (object)id28_name && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@name = Reader.Value;
++ paramsRead[1] = true;
++ }
++ else if (!paramsRead[2] && ((object) Reader.LocalName == (object)id116_unique && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@unique = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[2] = true;
++ }
++ else if (!paramsRead[3] && ((object) Reader.LocalName == (object)id131_insert && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@insert = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[3] = true;
++ }
++ else if (!paramsRead[4] && ((object) Reader.LocalName == (object)id130_update && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@update = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[4] = true;
++ }
++ else if (!paramsRead[5] && ((object) Reader.LocalName == (object)id102_optimisticlock && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@optimisticlock = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[5] = true;
++ }
++ else if (!paramsRead[6] && ((object) Reader.LocalName == (object)id71_node && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@node = Reader.Value;
++ paramsRead[6] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":name, :unique, :insert, :update, :optimistic-lock, :node");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@Items = (global::System.Object[])ShrinkArray(a_0, ca_0, typeof(global::System.Object), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations54 = 0;
++ int readerCount54 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ if (((object) Reader.LocalName == (object)id75_dynamiccomponent && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::System.Object[])EnsureArrayIndex(a_0, ca_0, typeof(global::System.Object));a_0[ca_0++] = Read69_HbmDynamicComponent(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id59_property && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::System.Object[])EnsureArrayIndex(a_0, ca_0, typeof(global::System.Object));a_0[ca_0++] = Read34_HbmProperty(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id77_component && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::System.Object[])EnsureArrayIndex(a_0, ca_0, typeof(global::System.Object));a_0[ca_0++] = Read68_HbmComponent(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id78_manytoone && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::System.Object[])EnsureArrayIndex(a_0, ca_0, typeof(global::System.Object));a_0[ca_0++] = Read29_HbmManyToOne(false, true);
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:dynamic-component, urn:nhibernate-mapping-2.2:property, urn:nhibernate-mapping-2.2:component, urn:nhibernate-mapping-2.2:many-to-one");
++ }
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:dynamic-component, urn:nhibernate-mapping-2.2:property, urn:nhibernate-mapping-2.2:component, urn:nhibernate-mapping-2.2:many-to-one");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations54, ref readerCount54);
++ }
++ o.@Items = (global::System.Object[])ShrinkArray(a_0, ca_0, typeof(global::System.Object), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmComponent Read68_HbmComponent(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmComponent o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmComponent();
++ global::NHibernate.Cfg.MappingSchema.HbmMeta[] a_0 = null;
++ int ca_0 = 0;
++ global::NHibernate.Cfg.MappingSchema.HbmTuplizer[] a_1 = null;
++ int ca_1 = 0;
++ global::System.Object[] a_3 = null;
++ int ca_3 = 0;
++ bool[] paramsRead = new bool[13];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[4] && ((object) Reader.LocalName == (object)id1_class && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@class = Reader.Value;
++ paramsRead[4] = true;
++ }
++ else if (!paramsRead[5] && ((object) Reader.LocalName == (object)id28_name && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@name = Reader.Value;
++ paramsRead[5] = true;
++ }
++ else if (!paramsRead[6] && ((object) Reader.LocalName == (object)id93_access && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@access = Reader.Value;
++ paramsRead[6] = true;
++ }
++ else if (!paramsRead[7] && ((object) Reader.LocalName == (object)id116_unique && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@unique = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[7] = true;
++ }
++ else if (!paramsRead[8] && ((object) Reader.LocalName == (object)id130_update && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@update = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[8] = true;
++ }
++ else if (!paramsRead[9] && ((object) Reader.LocalName == (object)id131_insert && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@insert = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[9] = true;
++ }
++ else if (!paramsRead[10] && ((object) Reader.LocalName == (object)id66_lazy && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@lazy = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[10] = true;
++ }
++ else if (!paramsRead[11] && ((object) Reader.LocalName == (object)id102_optimisticlock && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@optimisticlock = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[11] = true;
++ }
++ else if (!paramsRead[12] && ((object) Reader.LocalName == (object)id71_node && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@node = Reader.Value;
++ paramsRead[12] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":class, :name, :access, :unique, :update, :insert, :lazy, :optimistic-lock, :node");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@meta = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta), true);
++ o.@tuplizer = (global::NHibernate.Cfg.MappingSchema.HbmTuplizer[])ShrinkArray(a_1, ca_1, typeof(global::NHibernate.Cfg.MappingSchema.HbmTuplizer), true);
++ o.@Items = (global::System.Object[])ShrinkArray(a_3, ca_3, typeof(global::System.Object), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations55 = 0;
++ int readerCount55 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ if (((object) Reader.LocalName == (object)id13_meta && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])EnsureArrayIndex(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta));a_0[ca_0++] = Read4_HbmMeta(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id72_tuplizer && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_1 = (global::NHibernate.Cfg.MappingSchema.HbmTuplizer[])EnsureArrayIndex(a_1, ca_1, typeof(global::NHibernate.Cfg.MappingSchema.HbmTuplizer));a_1[ca_1++] = Read12_HbmTuplizer(false, true);
++ }
++ else if (!paramsRead[2] && ((object) Reader.LocalName == (object)id128_parent && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@parent = Read32_HbmParent(false, true);
++ paramsRead[2] = true;
++ }
++ else if (((object) Reader.LocalName == (object)id74_map && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_3 = (global::System.Object[])EnsureArrayIndex(a_3, ca_3, typeof(global::System.Object));a_3[ca_3++] = Read58_HbmMap(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id78_manytoone && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_3 = (global::System.Object[])EnsureArrayIndex(a_3, ca_3, typeof(global::System.Object));a_3[ca_3++] = Read29_HbmManyToOne(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id85_array && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_3 = (global::System.Object[])EnsureArrayIndex(a_3, ca_3, typeof(global::System.Object));a_3[ca_3++] = Read60_HbmArray(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id80_onetoone && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_3 = (global::System.Object[])EnsureArrayIndex(a_3, ca_3, typeof(global::System.Object));a_3[ca_3++] = Read61_HbmOneToOne(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id82_primitivearray && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_3 = (global::System.Object[])EnsureArrayIndex(a_3, ca_3, typeof(global::System.Object));a_3[ca_3++] = Read64_HbmPrimitiveArray(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id59_property && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_3 = (global::System.Object[])EnsureArrayIndex(a_3, ca_3, typeof(global::System.Object));a_3[ca_3++] = Read34_HbmProperty(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id81_set && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_3 = (global::System.Object[])EnsureArrayIndex(a_3, ca_3, typeof(global::System.Object));a_3[ca_3++] = Read49_HbmSet(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id86_bag && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_3 = (global::System.Object[])EnsureArrayIndex(a_3, ca_3, typeof(global::System.Object));a_3[ca_3++] = Read50_HbmBag(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id77_component && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_3 = (global::System.Object[])EnsureArrayIndex(a_3, ca_3, typeof(global::System.Object));a_3[ca_3++] = Read68_HbmComponent(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id83_idbag && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_3 = (global::System.Object[])EnsureArrayIndex(a_3, ca_3, typeof(global::System.Object));a_3[ca_3++] = Read66_HbmIdbag(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id76_list && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_3 = (global::System.Object[])EnsureArrayIndex(a_3, ca_3, typeof(global::System.Object));a_3[ca_3++] = Read67_HbmList(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id84_any && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_3 = (global::System.Object[])EnsureArrayIndex(a_3, ca_3, typeof(global::System.Object));a_3[ca_3++] = Read36_HbmAny(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id75_dynamiccomponent && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_3 = (global::System.Object[])EnsureArrayIndex(a_3, ca_3, typeof(global::System.Object));a_3[ca_3++] = Read69_HbmDynamicComponent(false, true);
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:meta, urn:nhibernate-mapping-2.2:tuplizer, urn:nhibernate-mapping-2.2:parent, urn:nhibernate-mapping-2.2:map, urn:nhibernate-mapping-2.2:many-to-one, urn:nhibernate-mapping-2.2:array, urn:nhibernate-mapping-2.2:one-to-one, urn:nhibernate-mapping-2.2:primitive-array, urn:nhibernate-mapping-2.2:property, urn:nhibernate-mapping-2.2:set, urn:nhibernate-mapping-2.2:bag, urn:nhibernate-mapping-2.2:component, urn:nhibernate-mapping-2.2:idbag, urn:nhibernate-mapping-2.2:list, urn:nhibernate-mapping-2.2:any, urn:nhibernate-mapping-2.2:dynamic-component");
++ }
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:meta, urn:nhibernate-mapping-2.2:tuplizer, urn:nhibernate-mapping-2.2:parent, urn:nhibernate-mapping-2.2:map, urn:nhibernate-mapping-2.2:many-to-one, urn:nhibernate-mapping-2.2:array, urn:nhibernate-mapping-2.2:one-to-one, urn:nhibernate-mapping-2.2:primitive-array, urn:nhibernate-mapping-2.2:property, urn:nhibernate-mapping-2.2:set, urn:nhibernate-mapping-2.2:bag, urn:nhibernate-mapping-2.2:component, urn:nhibernate-mapping-2.2:idbag, urn:nhibernate-mapping-2.2:list, urn:nhibernate-mapping-2.2:any, urn:nhibernate-mapping-2.2:dynamic-component");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations55, ref readerCount55);
++ }
++ o.@meta = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta), true);
++ o.@tuplizer = (global::NHibernate.Cfg.MappingSchema.HbmTuplizer[])ShrinkArray(a_1, ca_1, typeof(global::NHibernate.Cfg.MappingSchema.HbmTuplizer), true);
++ o.@Items = (global::System.Object[])ShrinkArray(a_3, ca_3, typeof(global::System.Object), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmDynamicComponent Read69_HbmDynamicComponent(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmDynamicComponent o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmDynamicComponent();
++ global::System.Object[] a_0 = null;
++ int ca_0 = 0;
++ bool[] paramsRead = new bool[8];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[1] && ((object) Reader.LocalName == (object)id28_name && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@name = Reader.Value;
++ paramsRead[1] = true;
++ }
++ else if (!paramsRead[2] && ((object) Reader.LocalName == (object)id93_access && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@access = Reader.Value;
++ paramsRead[2] = true;
++ }
++ else if (!paramsRead[3] && ((object) Reader.LocalName == (object)id116_unique && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@unique = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[3] = true;
++ }
++ else if (!paramsRead[4] && ((object) Reader.LocalName == (object)id130_update && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@update = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[4] = true;
++ }
++ else if (!paramsRead[5] && ((object) Reader.LocalName == (object)id131_insert && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@insert = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[5] = true;
++ }
++ else if (!paramsRead[6] && ((object) Reader.LocalName == (object)id102_optimisticlock && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@optimisticlock = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[6] = true;
++ }
++ else if (!paramsRead[7] && ((object) Reader.LocalName == (object)id71_node && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@node = Reader.Value;
++ paramsRead[7] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":name, :access, :unique, :update, :insert, :optimistic-lock, :node");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@Items = (global::System.Object[])ShrinkArray(a_0, ca_0, typeof(global::System.Object), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations56 = 0;
++ int readerCount56 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ if (((object) Reader.LocalName == (object)id78_manytoone && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::System.Object[])EnsureArrayIndex(a_0, ca_0, typeof(global::System.Object));a_0[ca_0++] = Read29_HbmManyToOne(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id81_set && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::System.Object[])EnsureArrayIndex(a_0, ca_0, typeof(global::System.Object));a_0[ca_0++] = Read49_HbmSet(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id86_bag && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::System.Object[])EnsureArrayIndex(a_0, ca_0, typeof(global::System.Object));a_0[ca_0++] = Read50_HbmBag(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id77_component && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::System.Object[])EnsureArrayIndex(a_0, ca_0, typeof(global::System.Object));a_0[ca_0++] = Read68_HbmComponent(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id59_property && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::System.Object[])EnsureArrayIndex(a_0, ca_0, typeof(global::System.Object));a_0[ca_0++] = Read34_HbmProperty(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id85_array && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::System.Object[])EnsureArrayIndex(a_0, ca_0, typeof(global::System.Object));a_0[ca_0++] = Read60_HbmArray(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id84_any && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::System.Object[])EnsureArrayIndex(a_0, ca_0, typeof(global::System.Object));a_0[ca_0++] = Read36_HbmAny(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id82_primitivearray && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::System.Object[])EnsureArrayIndex(a_0, ca_0, typeof(global::System.Object));a_0[ca_0++] = Read64_HbmPrimitiveArray(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id76_list && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::System.Object[])EnsureArrayIndex(a_0, ca_0, typeof(global::System.Object));a_0[ca_0++] = Read67_HbmList(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id75_dynamiccomponent && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::System.Object[])EnsureArrayIndex(a_0, ca_0, typeof(global::System.Object));a_0[ca_0++] = Read69_HbmDynamicComponent(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id74_map && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::System.Object[])EnsureArrayIndex(a_0, ca_0, typeof(global::System.Object));a_0[ca_0++] = Read58_HbmMap(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id80_onetoone && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::System.Object[])EnsureArrayIndex(a_0, ca_0, typeof(global::System.Object));a_0[ca_0++] = Read61_HbmOneToOne(false, true);
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:many-to-one, urn:nhibernate-mapping-2.2:set, urn:nhibernate-mapping-2.2:bag, urn:nhibernate-mapping-2.2:component, urn:nhibernate-mapping-2.2:property, urn:nhibernate-mapping-2.2:array, urn:nhibernate-mapping-2.2:any, urn:nhibernate-mapping-2.2:primitive-array, urn:nhibernate-mapping-2.2:list, urn:nhibernate-mapping-2.2:dynamic-component, urn:nhibernate-mapping-2.2:map, urn:nhibernate-mapping-2.2:one-to-one");
++ }
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:many-to-one, urn:nhibernate-mapping-2.2:set, urn:nhibernate-mapping-2.2:bag, urn:nhibernate-mapping-2.2:component, urn:nhibernate-mapping-2.2:property, urn:nhibernate-mapping-2.2:array, urn:nhibernate-mapping-2.2:any, urn:nhibernate-mapping-2.2:primitive-array, urn:nhibernate-mapping-2.2:list, urn:nhibernate-mapping-2.2:dynamic-component, urn:nhibernate-mapping-2.2:map, urn:nhibernate-mapping-2.2:one-to-one");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations56, ref readerCount56);
++ }
++ o.@Items = (global::System.Object[])ShrinkArray(a_0, ca_0, typeof(global::System.Object), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmMap Read58_HbmMap(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmMap o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmMap();
++ global::NHibernate.Cfg.MappingSchema.HbmMeta[] a_0 = null;
++ int ca_0 = 0;
++ global::NHibernate.Cfg.MappingSchema.HbmSynchronize[] a_3 = null;
++ int ca_3 = 0;
++ global::NHibernate.Cfg.MappingSchema.HbmFilter[] a_13 = null;
++ int ca_13 = 0;
++ bool[] paramsRead = new bool[37];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[14] && ((object) Reader.LocalName == (object)id28_name && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@name = Reader.Value;
++ paramsRead[14] = true;
++ }
++ else if (!paramsRead[15] && ((object) Reader.LocalName == (object)id93_access && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@access = Reader.Value;
++ paramsRead[15] = true;
++ }
++ else if (!paramsRead[16] && ((object) Reader.LocalName == (object)id50_table && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@table = Reader.Value;
++ paramsRead[16] = true;
++ }
++ else if (!paramsRead[17] && ((object) Reader.LocalName == (object)id5_schema && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@schema = Reader.Value;
++ paramsRead[17] = true;
++ }
++ else if (!paramsRead[18] && ((object) Reader.LocalName == (object)id6_catalog && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@catalog = Reader.Value;
++ paramsRead[18] = true;
++ }
++ else if (!paramsRead[19] && ((object) Reader.LocalName == (object)id61_subselect && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@subselect1 = Reader.Value;
++ paramsRead[19] = true;
++ }
++ else if (!paramsRead[20] && ((object) Reader.LocalName == (object)id66_lazy && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@lazy = Read47_HbmCollectionLazy(Reader.Value);
++ o.@lazySpecified = true;
++ paramsRead[20] = true;
++ }
++ else if (!paramsRead[21] && ((object) Reader.LocalName == (object)id94_inverse && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@inverse = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[21] = true;
++ }
++ else if (!paramsRead[22] && ((object) Reader.LocalName == (object)id95_mutable && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@mutable = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[22] = true;
++ }
++ else if (!paramsRead[23] && ((object) Reader.LocalName == (object)id96_cascade && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@cascade = Reader.Value;
++ paramsRead[23] = true;
++ }
++ else if (!paramsRead[24] && ((object) Reader.LocalName == (object)id97_orderby && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@orderby = Reader.Value;
++ paramsRead[24] = true;
++ }
++ else if (!paramsRead[25] && ((object) Reader.LocalName == (object)id98_where && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@where = Reader.Value;
++ paramsRead[25] = true;
++ }
++ else if (!paramsRead[26] && ((object) Reader.LocalName == (object)id70_batchsize && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@batchsize = System.Xml.XmlConvert.ToInt32(Reader.Value);
++ o.@batchsizeSpecified = true;
++ paramsRead[26] = true;
++ }
++ else if (!paramsRead[27] && ((object) Reader.LocalName == (object)id99_outerjoin && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@outerjoin = Read26_HbmOuterJoinStrategy(Reader.Value);
++ o.@outerjoinSpecified = true;
++ paramsRead[27] = true;
++ }
++ else if (!paramsRead[28] && ((object) Reader.LocalName == (object)id100_fetch && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@fetch = Read48_HbmCollectionFetchMode(Reader.Value);
++ o.@fetchSpecified = true;
++ paramsRead[28] = true;
++ }
++ else if (!paramsRead[29] && ((object) Reader.LocalName == (object)id68_persister && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@persister = Reader.Value;
++ paramsRead[29] = true;
++ }
++ else if (!paramsRead[30] && ((object) Reader.LocalName == (object)id101_collectiontype && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@collectiontype = Reader.Value;
++ paramsRead[30] = true;
++ }
++ else if (!paramsRead[31] && ((object) Reader.LocalName == (object)id69_check && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@check = Reader.Value;
++ paramsRead[31] = true;
++ }
++ else if (!paramsRead[32] && ((object) Reader.LocalName == (object)id102_optimisticlock && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@optimisticlock = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[32] = true;
++ }
++ else if (!paramsRead[33] && ((object) Reader.LocalName == (object)id71_node && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@node = Reader.Value;
++ paramsRead[33] = true;
++ }
++ else if (!paramsRead[34] && ((object) Reader.LocalName == (object)id103_embedxml && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@embedxml = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[34] = true;
++ }
++ else if (!paramsRead[35] && ((object) Reader.LocalName == (object)id104_generic && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@generic = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ o.@genericSpecified = true;
++ paramsRead[35] = true;
++ }
++ else if (!paramsRead[36] && ((object) Reader.LocalName == (object)id146_sort && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@sort = Reader.Value;
++ paramsRead[36] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":name, :access, :table, :schema, :catalog, :subselect, :lazy, :inverse, :mutable, :cascade, :order-by, :where, :batch-size, :outer-join, :fetch, :persister, :collection-type, :check, :optimistic-lock, :node, :embed-xml, :generic, :sort");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@meta = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta), true);
++ o.@synchronize = (global::NHibernate.Cfg.MappingSchema.HbmSynchronize[])ShrinkArray(a_3, ca_3, typeof(global::NHibernate.Cfg.MappingSchema.HbmSynchronize), true);
++ o.@filter = (global::NHibernate.Cfg.MappingSchema.HbmFilter[])ShrinkArray(a_13, ca_13, typeof(global::NHibernate.Cfg.MappingSchema.HbmFilter), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations57 = 0;
++ int readerCount57 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ if (((object) Reader.LocalName == (object)id13_meta && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])EnsureArrayIndex(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta));a_0[ca_0++] = Read4_HbmMeta(false, true);
++ }
++ else if (!paramsRead[1] && ((object) Reader.LocalName == (object)id61_subselect && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@subselect = Read5_HbmSubselect(false, true);
++ paramsRead[1] = true;
++ }
++ else if (!paramsRead[2] && ((object) Reader.LocalName == (object)id105_cache && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@cache = Read8_HbmCache(false, true);
++ paramsRead[2] = true;
++ }
++ else if (((object) Reader.LocalName == (object)id49_synchronize && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_3 = (global::NHibernate.Cfg.MappingSchema.HbmSynchronize[])EnsureArrayIndex(a_3, ca_3, typeof(global::NHibernate.Cfg.MappingSchema.HbmSynchronize));a_3[ca_3++] = Read9_HbmSynchronize(false, true);
++ }
++ else if (!paramsRead[4] && ((object) Reader.LocalName == (object)id41_comment && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@comment = Read10_HbmComment(false, true);
++ paramsRead[4] = true;
++ }
++ else if (!paramsRead[5] && ((object) Reader.LocalName == (object)id73_key && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@key = Read31_HbmKey(false, true);
++ paramsRead[5] = true;
++ }
++ else if (!paramsRead[6] && ((object) Reader.LocalName == (object)id148_indexmanytomany && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@Item = Read51_HbmIndexManyToMany(false, true);
++ paramsRead[6] = true;
++ }
++ else if (!paramsRead[6] && ((object) Reader.LocalName == (object)id149_mapkeymanytomany && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@Item = Read52_HbmMapKeyManyToMany(false, true);
++ paramsRead[6] = true;
++ }
++ else if (!paramsRead[6] && ((object) Reader.LocalName == (object)id150_compositeindex && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@Item = Read53_HbmCompositeIndex(false, true);
++ paramsRead[6] = true;
++ }
++ else if (!paramsRead[6] && ((object) Reader.LocalName == (object)id151_compositemapkey && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@Item = Read54_HbmCompositeMapKey(false, true);
++ paramsRead[6] = true;
++ }
++ else if (!paramsRead[6] && ((object) Reader.LocalName == (object)id124_index && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@Item = Read55_HbmIndex(false, true);
++ paramsRead[6] = true;
++ }
++ else if (!paramsRead[6] && ((object) Reader.LocalName == (object)id152_indexmanytoany && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@Item = Read56_HbmIndexManyToAny(false, true);
++ paramsRead[6] = true;
++ }
++ else if (!paramsRead[6] && ((object) Reader.LocalName == (object)id153_mapkey && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@Item = Read57_HbmMapKey(false, true);
++ paramsRead[6] = true;
++ }
++ else if (!paramsRead[7] && ((object) Reader.LocalName == (object)id108_compositeelement && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@Item1 = Read38_HbmCompositeElement(false, true);
++ paramsRead[7] = true;
++ }
++ else if (!paramsRead[7] && ((object) Reader.LocalName == (object)id110_onetomany && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@Item1 = Read43_HbmOneToMany(false, true);
++ paramsRead[7] = true;
++ }
++ else if (!paramsRead[7] && ((object) Reader.LocalName == (object)id109_manytomany && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@Item1 = Read42_HbmManyToMany(false, true);
++ paramsRead[7] = true;
++ }
++ else if (!paramsRead[7] && ((object) Reader.LocalName == (object)id107_element && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@Item1 = Read39_HbmElement(false, true);
++ paramsRead[7] = true;
++ }
++ else if (!paramsRead[7] && ((object) Reader.LocalName == (object)id106_manytoany && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@Item1 = Read40_HbmManyToAny(false, true);
++ paramsRead[7] = true;
++ }
++ else if (!paramsRead[8] && ((object) Reader.LocalName == (object)id87_loader && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@loader = Read44_HbmLoader(false, true);
++ paramsRead[8] = true;
++ }
++ else if (!paramsRead[9] && ((object) Reader.LocalName == (object)id88_sqlinsert && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@sqlinsert = Read46_HbmCustomSQL(false, true);
++ paramsRead[9] = true;
++ }
++ else if (!paramsRead[10] && ((object) Reader.LocalName == (object)id89_sqlupdate && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@sqlupdate = Read46_HbmCustomSQL(false, true);
++ paramsRead[10] = true;
++ }
++ else if (!paramsRead[11] && ((object) Reader.LocalName == (object)id90_sqldelete && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@sqldelete = Read46_HbmCustomSQL(false, true);
++ paramsRead[11] = true;
++ }
++ else if (!paramsRead[12] && ((object) Reader.LocalName == (object)id111_sqldeleteall && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@sqldeleteall = Read46_HbmCustomSQL(false, true);
++ paramsRead[12] = true;
++ }
++ else if (((object) Reader.LocalName == (object)id112_filter && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_13 = (global::NHibernate.Cfg.MappingSchema.HbmFilter[])EnsureArrayIndex(a_13, ca_13, typeof(global::NHibernate.Cfg.MappingSchema.HbmFilter));a_13[ca_13++] = Read41_HbmFilter(false, true);
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:meta, urn:nhibernate-mapping-2.2:subselect, urn:nhibernate-mapping-2.2:cache, urn:nhibernate-mapping-2.2:synchronize, urn:nhibernate-mapping-2.2:comment, urn:nhibernate-mapping-2.2:key, urn:nhibernate-mapping-2.2:index-many-to-many, urn:nhibernate-mapping-2.2:map-key-many-to-many, urn:nhibernate-mapping-2.2:composite-index, urn:nhibernate-mapping-2.2:composite-map-key, urn:nhibernate-mapping-2.2:index, urn:nhibernate-mapping-2.2:index-many-to-any, urn:nhibernate-mapping-2.2:map-key, urn:nhibernate-mapping-2.2:composite-element, urn:nhibernate-mapping-2.2:one-to-many, urn:nhibernate-mapping-2.2:many-to-many, urn:nhibernate-mapping-2.2:element, urn:nhibernate-mapping-2.2:many-to-any, urn:nhibernate-mapping-2.2:loader, urn:nhibernate-mapping-2.2:sql-insert, urn:nhibernate-mapping-2.2:sql-update, urn:nhibernate-mapping-2.2:sql-delete, urn:nhibernate-mapping-2.2:sql-delete-all, urn:nhibernate-mapping-2.2:filter");
++ }
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:meta, urn:nhibernate-mapping-2.2:subselect, urn:nhibernate-mapping-2.2:cache, urn:nhibernate-mapping-2.2:synchronize, urn:nhibernate-mapping-2.2:comment, urn:nhibernate-mapping-2.2:key, urn:nhibernate-mapping-2.2:index-many-to-many, urn:nhibernate-mapping-2.2:map-key-many-to-many, urn:nhibernate-mapping-2.2:composite-index, urn:nhibernate-mapping-2.2:composite-map-key, urn:nhibernate-mapping-2.2:index, urn:nhibernate-mapping-2.2:index-many-to-any, urn:nhibernate-mapping-2.2:map-key, urn:nhibernate-mapping-2.2:composite-element, urn:nhibernate-mapping-2.2:one-to-many, urn:nhibernate-mapping-2.2:many-to-many, urn:nhibernate-mapping-2.2:element, urn:nhibernate-mapping-2.2:many-to-any, urn:nhibernate-mapping-2.2:loader, urn:nhibernate-mapping-2.2:sql-insert, urn:nhibernate-mapping-2.2:sql-update, urn:nhibernate-mapping-2.2:sql-delete, urn:nhibernate-mapping-2.2:sql-delete-all, urn:nhibernate-mapping-2.2:filter");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations57, ref readerCount57);
++ }
++ o.@meta = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta), true);
++ o.@synchronize = (global::NHibernate.Cfg.MappingSchema.HbmSynchronize[])ShrinkArray(a_3, ca_3, typeof(global::NHibernate.Cfg.MappingSchema.HbmSynchronize), true);
++ o.@filter = (global::NHibernate.Cfg.MappingSchema.HbmFilter[])ShrinkArray(a_13, ca_13, typeof(global::NHibernate.Cfg.MappingSchema.HbmFilter), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmMapKey Read57_HbmMapKey(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmMapKey o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmMapKey();
++ global::System.Object[] a_0 = null;
++ int ca_0 = 0;
++ bool[] paramsRead = new bool[6];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[1] && ((object) Reader.LocalName == (object)id55_column && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@column = Reader.Value;
++ paramsRead[1] = true;
++ }
++ else if (!paramsRead[2] && ((object) Reader.LocalName == (object)id114_formula && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@formula = Reader.Value;
++ paramsRead[2] = true;
++ }
++ else if (!paramsRead[3] && ((object) Reader.LocalName == (object)id33_type && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@type = Reader.Value;
++ paramsRead[3] = true;
++ }
++ else if (!paramsRead[4] && ((object) Reader.LocalName == (object)id118_length && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@length = CollapseWhitespace(Reader.Value);
++ paramsRead[4] = true;
++ }
++ else if (!paramsRead[5] && ((object) Reader.LocalName == (object)id71_node && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@node = Reader.Value;
++ paramsRead[5] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":column, :formula, :type, :length, :node");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@Items = (global::System.Object[])ShrinkArray(a_0, ca_0, typeof(global::System.Object), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations58 = 0;
++ int readerCount58 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ if (((object) Reader.LocalName == (object)id55_column && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::System.Object[])EnsureArrayIndex(a_0, ca_0, typeof(global::System.Object));a_0[ca_0++] = Read13_HbmColumn(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id114_formula && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::System.Object[])EnsureArrayIndex(a_0, ca_0, typeof(global::System.Object));a_0[ca_0++] = Read24_HbmFormula(false, true);
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:column, urn:nhibernate-mapping-2.2:formula");
++ }
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:column, urn:nhibernate-mapping-2.2:formula");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations58, ref readerCount58);
++ }
++ o.@Items = (global::System.Object[])ShrinkArray(a_0, ca_0, typeof(global::System.Object), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmIndexManyToAny Read56_HbmIndexManyToAny(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmIndexManyToAny o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmIndexManyToAny();
++ global::NHibernate.Cfg.MappingSchema.HbmColumn[] a_0 = null;
++ int ca_0 = 0;
++ bool[] paramsRead = new bool[4];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[1] && ((object) Reader.LocalName == (object)id132_idtype && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@idtype = Reader.Value;
++ paramsRead[1] = true;
++ }
++ else if (!paramsRead[2] && ((object) Reader.LocalName == (object)id133_metatype && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@metatype = Reader.Value;
++ paramsRead[2] = true;
++ }
++ else if (!paramsRead[3] && ((object) Reader.LocalName == (object)id55_column && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@column1 = Reader.Value;
++ paramsRead[3] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":id-type, :meta-type, :column");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@column = (global::NHibernate.Cfg.MappingSchema.HbmColumn[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmColumn), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations59 = 0;
++ int readerCount59 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ if (((object) Reader.LocalName == (object)id55_column && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::NHibernate.Cfg.MappingSchema.HbmColumn[])EnsureArrayIndex(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmColumn));a_0[ca_0++] = Read13_HbmColumn(false, true);
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:column");
++ }
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:column");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations59, ref readerCount59);
++ }
++ o.@column = (global::NHibernate.Cfg.MappingSchema.HbmColumn[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmColumn), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmCompositeMapKey Read54_HbmCompositeMapKey(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmCompositeMapKey o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmCompositeMapKey();
++ global::System.Object[] a_0 = null;
++ int ca_0 = 0;
++ bool[] paramsRead = new bool[2];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[1] && ((object) Reader.LocalName == (object)id1_class && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@class = Reader.Value;
++ paramsRead[1] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":class");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@Items = (global::System.Object[])ShrinkArray(a_0, ca_0, typeof(global::System.Object), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations60 = 0;
++ int readerCount60 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ if (((object) Reader.LocalName == (object)id154_keymanytoone && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::System.Object[])EnsureArrayIndex(a_0, ca_0, typeof(global::System.Object));a_0[ca_0++] = Read20_HbmKeyManyToOne(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id155_keyproperty && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::System.Object[])EnsureArrayIndex(a_0, ca_0, typeof(global::System.Object));a_0[ca_0++] = Read21_HbmKeyProperty(false, true);
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:key-many-to-one, urn:nhibernate-mapping-2.2:key-property");
++ }
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:key-many-to-one, urn:nhibernate-mapping-2.2:key-property");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations60, ref readerCount60);
++ }
++ o.@Items = (global::System.Object[])ShrinkArray(a_0, ca_0, typeof(global::System.Object), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmKeyProperty Read21_HbmKeyProperty(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmKeyProperty o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmKeyProperty();
++ global::NHibernate.Cfg.MappingSchema.HbmMeta[] a_0 = null;
++ int ca_0 = 0;
++ global::NHibernate.Cfg.MappingSchema.HbmColumn[] a_1 = null;
++ int ca_1 = 0;
++ bool[] paramsRead = new bool[9];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[3] && ((object) Reader.LocalName == (object)id28_name && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@name = Reader.Value;
++ paramsRead[3] = true;
++ }
++ else if (!paramsRead[4] && ((object) Reader.LocalName == (object)id93_access && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@access = Reader.Value;
++ paramsRead[4] = true;
++ }
++ else if (!paramsRead[5] && ((object) Reader.LocalName == (object)id33_type && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@type1 = Reader.Value;
++ paramsRead[5] = true;
++ }
++ else if (!paramsRead[6] && ((object) Reader.LocalName == (object)id55_column && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@column1 = Reader.Value;
++ paramsRead[6] = true;
++ }
++ else if (!paramsRead[7] && ((object) Reader.LocalName == (object)id118_length && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@length = CollapseWhitespace(Reader.Value);
++ paramsRead[7] = true;
++ }
++ else if (!paramsRead[8] && ((object) Reader.LocalName == (object)id71_node && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@node = Reader.Value;
++ paramsRead[8] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":name, :access, :type, :column, :length, :node");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@meta = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta), true);
++ o.@column = (global::NHibernate.Cfg.MappingSchema.HbmColumn[])ShrinkArray(a_1, ca_1, typeof(global::NHibernate.Cfg.MappingSchema.HbmColumn), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations61 = 0;
++ int readerCount61 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ if (((object) Reader.LocalName == (object)id13_meta && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])EnsureArrayIndex(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta));a_0[ca_0++] = Read4_HbmMeta(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id55_column && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_1 = (global::NHibernate.Cfg.MappingSchema.HbmColumn[])EnsureArrayIndex(a_1, ca_1, typeof(global::NHibernate.Cfg.MappingSchema.HbmColumn));a_1[ca_1++] = Read13_HbmColumn(false, true);
++ }
++ else if (!paramsRead[2] && ((object) Reader.LocalName == (object)id33_type && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@type = Read15_HbmType(false, true);
++ paramsRead[2] = true;
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:meta, urn:nhibernate-mapping-2.2:column, urn:nhibernate-mapping-2.2:type");
++ }
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:meta, urn:nhibernate-mapping-2.2:column, urn:nhibernate-mapping-2.2:type");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations61, ref readerCount61);
++ }
++ o.@meta = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta), true);
++ o.@column = (global::NHibernate.Cfg.MappingSchema.HbmColumn[])ShrinkArray(a_1, ca_1, typeof(global::NHibernate.Cfg.MappingSchema.HbmColumn), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmKeyManyToOne Read20_HbmKeyManyToOne(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmKeyManyToOne o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmKeyManyToOne();
++ global::NHibernate.Cfg.MappingSchema.HbmMeta[] a_0 = null;
++ int ca_0 = 0;
++ global::NHibernate.Cfg.MappingSchema.HbmColumn[] a_1 = null;
++ int ca_1 = 0;
++ bool[] paramsRead = new bool[10];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[2] && ((object) Reader.LocalName == (object)id28_name && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@name = Reader.Value;
++ paramsRead[2] = true;
++ }
++ else if (!paramsRead[3] && ((object) Reader.LocalName == (object)id93_access && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@access = Reader.Value;
++ paramsRead[3] = true;
++ }
++ else if (!paramsRead[4] && ((object) Reader.LocalName == (object)id1_class && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@class = Reader.Value;
++ paramsRead[4] = true;
++ }
++ else if (!paramsRead[5] && ((object) Reader.LocalName == (object)id57_entityname && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@entityname = Reader.Value;
++ paramsRead[5] = true;
++ }
++ else if (!paramsRead[6] && ((object) Reader.LocalName == (object)id55_column && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@column1 = Reader.Value;
++ paramsRead[6] = true;
++ }
++ else if (!paramsRead[7] && ((object) Reader.LocalName == (object)id115_foreignkey && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@foreignkey = Reader.Value;
++ paramsRead[7] = true;
++ }
++ else if (!paramsRead[8] && ((object) Reader.LocalName == (object)id66_lazy && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@lazy = Read18_HbmRestrictedLaziness(Reader.Value);
++ o.@lazySpecified = true;
++ paramsRead[8] = true;
++ }
++ else if (!paramsRead[9] && ((object) Reader.LocalName == (object)id113_notfound && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@notfound = Read19_HbmNotFoundMode(Reader.Value);
++ paramsRead[9] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":name, :access, :class, :entity-name, :column, :foreign-key, :lazy, :not-found");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@meta = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta), true);
++ o.@column = (global::NHibernate.Cfg.MappingSchema.HbmColumn[])ShrinkArray(a_1, ca_1, typeof(global::NHibernate.Cfg.MappingSchema.HbmColumn), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations62 = 0;
++ int readerCount62 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ if (((object) Reader.LocalName == (object)id13_meta && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])EnsureArrayIndex(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta));a_0[ca_0++] = Read4_HbmMeta(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id55_column && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_1 = (global::NHibernate.Cfg.MappingSchema.HbmColumn[])EnsureArrayIndex(a_1, ca_1, typeof(global::NHibernate.Cfg.MappingSchema.HbmColumn));a_1[ca_1++] = Read13_HbmColumn(false, true);
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:meta, urn:nhibernate-mapping-2.2:column");
++ }
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:meta, urn:nhibernate-mapping-2.2:column");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations62, ref readerCount62);
++ }
++ o.@meta = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta), true);
++ o.@column = (global::NHibernate.Cfg.MappingSchema.HbmColumn[])ShrinkArray(a_1, ca_1, typeof(global::NHibernate.Cfg.MappingSchema.HbmColumn), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmCompositeIndex Read53_HbmCompositeIndex(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmCompositeIndex o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmCompositeIndex();
++ global::System.Object[] a_0 = null;
++ int ca_0 = 0;
++ bool[] paramsRead = new bool[2];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[1] && ((object) Reader.LocalName == (object)id1_class && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@class = Reader.Value;
++ paramsRead[1] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":class");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@Items = (global::System.Object[])ShrinkArray(a_0, ca_0, typeof(global::System.Object), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations63 = 0;
++ int readerCount63 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ if (((object) Reader.LocalName == (object)id155_keyproperty && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::System.Object[])EnsureArrayIndex(a_0, ca_0, typeof(global::System.Object));a_0[ca_0++] = Read21_HbmKeyProperty(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id154_keymanytoone && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::System.Object[])EnsureArrayIndex(a_0, ca_0, typeof(global::System.Object));a_0[ca_0++] = Read20_HbmKeyManyToOne(false, true);
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:key-property, urn:nhibernate-mapping-2.2:key-many-to-one");
++ }
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:key-property, urn:nhibernate-mapping-2.2:key-many-to-one");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations63, ref readerCount63);
++ }
++ o.@Items = (global::System.Object[])ShrinkArray(a_0, ca_0, typeof(global::System.Object), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmMapKeyManyToMany Read52_HbmMapKeyManyToMany(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmMapKeyManyToMany o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmMapKeyManyToMany();
++ global::System.Object[] a_0 = null;
++ int ca_0 = 0;
++ bool[] paramsRead = new bool[6];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[1] && ((object) Reader.LocalName == (object)id1_class && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@class = Reader.Value;
++ paramsRead[1] = true;
++ }
++ else if (!paramsRead[2] && ((object) Reader.LocalName == (object)id57_entityname && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@entityname = Reader.Value;
++ paramsRead[2] = true;
++ }
++ else if (!paramsRead[3] && ((object) Reader.LocalName == (object)id55_column && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@column = Reader.Value;
++ paramsRead[3] = true;
++ }
++ else if (!paramsRead[4] && ((object) Reader.LocalName == (object)id114_formula && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@formula = Reader.Value;
++ paramsRead[4] = true;
++ }
++ else if (!paramsRead[5] && ((object) Reader.LocalName == (object)id115_foreignkey && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@foreignkey = Reader.Value;
++ paramsRead[5] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":class, :entity-name, :column, :formula, :foreign-key");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@Items = (global::System.Object[])ShrinkArray(a_0, ca_0, typeof(global::System.Object), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations64 = 0;
++ int readerCount64 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ if (((object) Reader.LocalName == (object)id114_formula && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::System.Object[])EnsureArrayIndex(a_0, ca_0, typeof(global::System.Object));a_0[ca_0++] = Read24_HbmFormula(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id55_column && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::System.Object[])EnsureArrayIndex(a_0, ca_0, typeof(global::System.Object));a_0[ca_0++] = Read13_HbmColumn(false, true);
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:formula, urn:nhibernate-mapping-2.2:column");
++ }
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:formula, urn:nhibernate-mapping-2.2:column");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations64, ref readerCount64);
++ }
++ o.@Items = (global::System.Object[])ShrinkArray(a_0, ca_0, typeof(global::System.Object), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmIndexManyToMany Read51_HbmIndexManyToMany(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmIndexManyToMany o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmIndexManyToMany();
++ global::NHibernate.Cfg.MappingSchema.HbmColumn[] a_0 = null;
++ int ca_0 = 0;
++ bool[] paramsRead = new bool[5];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[1] && ((object) Reader.LocalName == (object)id1_class && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@class = Reader.Value;
++ paramsRead[1] = true;
++ }
++ else if (!paramsRead[2] && ((object) Reader.LocalName == (object)id57_entityname && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@entityname = Reader.Value;
++ paramsRead[2] = true;
++ }
++ else if (!paramsRead[3] && ((object) Reader.LocalName == (object)id55_column && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@column1 = Reader.Value;
++ paramsRead[3] = true;
++ }
++ else if (!paramsRead[4] && ((object) Reader.LocalName == (object)id115_foreignkey && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@foreignkey = Reader.Value;
++ paramsRead[4] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":class, :entity-name, :column, :foreign-key");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@column = (global::NHibernate.Cfg.MappingSchema.HbmColumn[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmColumn), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations65 = 0;
++ int readerCount65 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ if (((object) Reader.LocalName == (object)id55_column && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::NHibernate.Cfg.MappingSchema.HbmColumn[])EnsureArrayIndex(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmColumn));a_0[ca_0++] = Read13_HbmColumn(false, true);
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:column");
++ }
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:column");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations65, ref readerCount65);
++ }
++ o.@column = (global::NHibernate.Cfg.MappingSchema.HbmColumn[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmColumn), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmList Read67_HbmList(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmList o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmList();
++ global::NHibernate.Cfg.MappingSchema.HbmMeta[] a_0 = null;
++ int ca_0 = 0;
++ global::NHibernate.Cfg.MappingSchema.HbmSynchronize[] a_3 = null;
++ int ca_3 = 0;
++ global::NHibernate.Cfg.MappingSchema.HbmFilter[] a_13 = null;
++ int ca_13 = 0;
++ bool[] paramsRead = new bool[36];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[14] && ((object) Reader.LocalName == (object)id28_name && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@name = Reader.Value;
++ paramsRead[14] = true;
++ }
++ else if (!paramsRead[15] && ((object) Reader.LocalName == (object)id93_access && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@access = Reader.Value;
++ paramsRead[15] = true;
++ }
++ else if (!paramsRead[16] && ((object) Reader.LocalName == (object)id50_table && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@table = Reader.Value;
++ paramsRead[16] = true;
++ }
++ else if (!paramsRead[17] && ((object) Reader.LocalName == (object)id5_schema && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@schema = Reader.Value;
++ paramsRead[17] = true;
++ }
++ else if (!paramsRead[18] && ((object) Reader.LocalName == (object)id6_catalog && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@catalog = Reader.Value;
++ paramsRead[18] = true;
++ }
++ else if (!paramsRead[19] && ((object) Reader.LocalName == (object)id61_subselect && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@subselect1 = Reader.Value;
++ paramsRead[19] = true;
++ }
++ else if (!paramsRead[20] && ((object) Reader.LocalName == (object)id66_lazy && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@lazy = Read47_HbmCollectionLazy(Reader.Value);
++ o.@lazySpecified = true;
++ paramsRead[20] = true;
++ }
++ else if (!paramsRead[21] && ((object) Reader.LocalName == (object)id94_inverse && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@inverse = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[21] = true;
++ }
++ else if (!paramsRead[22] && ((object) Reader.LocalName == (object)id95_mutable && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@mutable = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[22] = true;
++ }
++ else if (!paramsRead[23] && ((object) Reader.LocalName == (object)id96_cascade && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@cascade = Reader.Value;
++ paramsRead[23] = true;
++ }
++ else if (!paramsRead[24] && ((object) Reader.LocalName == (object)id97_orderby && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@orderby = Reader.Value;
++ paramsRead[24] = true;
++ }
++ else if (!paramsRead[25] && ((object) Reader.LocalName == (object)id98_where && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@where = Reader.Value;
++ paramsRead[25] = true;
++ }
++ else if (!paramsRead[26] && ((object) Reader.LocalName == (object)id70_batchsize && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@batchsize = System.Xml.XmlConvert.ToInt32(Reader.Value);
++ o.@batchsizeSpecified = true;
++ paramsRead[26] = true;
++ }
++ else if (!paramsRead[27] && ((object) Reader.LocalName == (object)id99_outerjoin && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@outerjoin = Read26_HbmOuterJoinStrategy(Reader.Value);
++ o.@outerjoinSpecified = true;
++ paramsRead[27] = true;
++ }
++ else if (!paramsRead[28] && ((object) Reader.LocalName == (object)id100_fetch && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@fetch = Read48_HbmCollectionFetchMode(Reader.Value);
++ o.@fetchSpecified = true;
++ paramsRead[28] = true;
++ }
++ else if (!paramsRead[29] && ((object) Reader.LocalName == (object)id68_persister && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@persister = Reader.Value;
++ paramsRead[29] = true;
++ }
++ else if (!paramsRead[30] && ((object) Reader.LocalName == (object)id101_collectiontype && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@collectiontype = Reader.Value;
++ paramsRead[30] = true;
++ }
++ else if (!paramsRead[31] && ((object) Reader.LocalName == (object)id69_check && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@check = Reader.Value;
++ paramsRead[31] = true;
++ }
++ else if (!paramsRead[32] && ((object) Reader.LocalName == (object)id102_optimisticlock && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@optimisticlock = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[32] = true;
++ }
++ else if (!paramsRead[33] && ((object) Reader.LocalName == (object)id71_node && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@node = Reader.Value;
++ paramsRead[33] = true;
++ }
++ else if (!paramsRead[34] && ((object) Reader.LocalName == (object)id103_embedxml && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@embedxml = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[34] = true;
++ }
++ else if (!paramsRead[35] && ((object) Reader.LocalName == (object)id104_generic && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@generic = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ o.@genericSpecified = true;
++ paramsRead[35] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":name, :access, :table, :schema, :catalog, :subselect, :lazy, :inverse, :mutable, :cascade, :order-by, :where, :batch-size, :outer-join, :fetch, :persister, :collection-type, :check, :optimistic-lock, :node, :embed-xml, :generic");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@meta = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta), true);
++ o.@synchronize = (global::NHibernate.Cfg.MappingSchema.HbmSynchronize[])ShrinkArray(a_3, ca_3, typeof(global::NHibernate.Cfg.MappingSchema.HbmSynchronize), true);
++ o.@filter = (global::NHibernate.Cfg.MappingSchema.HbmFilter[])ShrinkArray(a_13, ca_13, typeof(global::NHibernate.Cfg.MappingSchema.HbmFilter), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations66 = 0;
++ int readerCount66 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ if (((object) Reader.LocalName == (object)id13_meta && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])EnsureArrayIndex(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta));a_0[ca_0++] = Read4_HbmMeta(false, true);
++ }
++ else if (!paramsRead[1] && ((object) Reader.LocalName == (object)id61_subselect && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@subselect = Read5_HbmSubselect(false, true);
++ paramsRead[1] = true;
++ }
++ else if (!paramsRead[2] && ((object) Reader.LocalName == (object)id105_cache && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@cache = Read8_HbmCache(false, true);
++ paramsRead[2] = true;
++ }
++ else if (((object) Reader.LocalName == (object)id49_synchronize && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_3 = (global::NHibernate.Cfg.MappingSchema.HbmSynchronize[])EnsureArrayIndex(a_3, ca_3, typeof(global::NHibernate.Cfg.MappingSchema.HbmSynchronize));a_3[ca_3++] = Read9_HbmSynchronize(false, true);
++ }
++ else if (!paramsRead[4] && ((object) Reader.LocalName == (object)id41_comment && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@comment = Read10_HbmComment(false, true);
++ paramsRead[4] = true;
++ }
++ else if (!paramsRead[5] && ((object) Reader.LocalName == (object)id73_key && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@key = Read31_HbmKey(false, true);
++ paramsRead[5] = true;
++ }
++ else if (!paramsRead[6] && ((object) Reader.LocalName == (object)id124_index && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@Item = Read55_HbmIndex(false, true);
++ paramsRead[6] = true;
++ }
++ else if (!paramsRead[6] && ((object) Reader.LocalName == (object)id142_listindex && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@Item = Read59_HbmListIndex(false, true);
++ paramsRead[6] = true;
++ }
++ else if (!paramsRead[7] && ((object) Reader.LocalName == (object)id108_compositeelement && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@Item1 = Read38_HbmCompositeElement(false, true);
++ paramsRead[7] = true;
++ }
++ else if (!paramsRead[7] && ((object) Reader.LocalName == (object)id107_element && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@Item1 = Read39_HbmElement(false, true);
++ paramsRead[7] = true;
++ }
++ else if (!paramsRead[7] && ((object) Reader.LocalName == (object)id106_manytoany && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@Item1 = Read40_HbmManyToAny(false, true);
++ paramsRead[7] = true;
++ }
++ else if (!paramsRead[7] && ((object) Reader.LocalName == (object)id109_manytomany && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@Item1 = Read42_HbmManyToMany(false, true);
++ paramsRead[7] = true;
++ }
++ else if (!paramsRead[7] && ((object) Reader.LocalName == (object)id110_onetomany && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@Item1 = Read43_HbmOneToMany(false, true);
++ paramsRead[7] = true;
++ }
++ else if (!paramsRead[8] && ((object) Reader.LocalName == (object)id87_loader && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@loader = Read44_HbmLoader(false, true);
++ paramsRead[8] = true;
++ }
++ else if (!paramsRead[9] && ((object) Reader.LocalName == (object)id88_sqlinsert && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@sqlinsert = Read46_HbmCustomSQL(false, true);
++ paramsRead[9] = true;
++ }
++ else if (!paramsRead[10] && ((object) Reader.LocalName == (object)id89_sqlupdate && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@sqlupdate = Read46_HbmCustomSQL(false, true);
++ paramsRead[10] = true;
++ }
++ else if (!paramsRead[11] && ((object) Reader.LocalName == (object)id90_sqldelete && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@sqldelete = Read46_HbmCustomSQL(false, true);
++ paramsRead[11] = true;
++ }
++ else if (!paramsRead[12] && ((object) Reader.LocalName == (object)id111_sqldeleteall && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@sqldeleteall = Read46_HbmCustomSQL(false, true);
++ paramsRead[12] = true;
++ }
++ else if (((object) Reader.LocalName == (object)id112_filter && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_13 = (global::NHibernate.Cfg.MappingSchema.HbmFilter[])EnsureArrayIndex(a_13, ca_13, typeof(global::NHibernate.Cfg.MappingSchema.HbmFilter));a_13[ca_13++] = Read41_HbmFilter(false, true);
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:meta, urn:nhibernate-mapping-2.2:subselect, urn:nhibernate-mapping-2.2:cache, urn:nhibernate-mapping-2.2:synchronize, urn:nhibernate-mapping-2.2:comment, urn:nhibernate-mapping-2.2:key, urn:nhibernate-mapping-2.2:index, urn:nhibernate-mapping-2.2:list-index, urn:nhibernate-mapping-2.2:composite-element, urn:nhibernate-mapping-2.2:element, urn:nhibernate-mapping-2.2:many-to-any, urn:nhibernate-mapping-2.2:many-to-many, urn:nhibernate-mapping-2.2:one-to-many, urn:nhibernate-mapping-2.2:loader, urn:nhibernate-mapping-2.2:sql-insert, urn:nhibernate-mapping-2.2:sql-update, urn:nhibernate-mapping-2.2:sql-delete, urn:nhibernate-mapping-2.2:sql-delete-all, urn:nhibernate-mapping-2.2:filter");
++ }
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:meta, urn:nhibernate-mapping-2.2:subselect, urn:nhibernate-mapping-2.2:cache, urn:nhibernate-mapping-2.2:synchronize, urn:nhibernate-mapping-2.2:comment, urn:nhibernate-mapping-2.2:key, urn:nhibernate-mapping-2.2:index, urn:nhibernate-mapping-2.2:list-index, urn:nhibernate-mapping-2.2:composite-element, urn:nhibernate-mapping-2.2:element, urn:nhibernate-mapping-2.2:many-to-any, urn:nhibernate-mapping-2.2:many-to-many, urn:nhibernate-mapping-2.2:one-to-many, urn:nhibernate-mapping-2.2:loader, urn:nhibernate-mapping-2.2:sql-insert, urn:nhibernate-mapping-2.2:sql-update, urn:nhibernate-mapping-2.2:sql-delete, urn:nhibernate-mapping-2.2:sql-delete-all, urn:nhibernate-mapping-2.2:filter");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations66, ref readerCount66);
++ }
++ o.@meta = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta), true);
++ o.@synchronize = (global::NHibernate.Cfg.MappingSchema.HbmSynchronize[])ShrinkArray(a_3, ca_3, typeof(global::NHibernate.Cfg.MappingSchema.HbmSynchronize), true);
++ o.@filter = (global::NHibernate.Cfg.MappingSchema.HbmFilter[])ShrinkArray(a_13, ca_13, typeof(global::NHibernate.Cfg.MappingSchema.HbmFilter), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmTuplizer Read12_HbmTuplizer(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmTuplizer o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmTuplizer();
++ bool[] paramsRead = new bool[2];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[0] && ((object) Reader.LocalName == (object)id156_entitymode && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@entitymode = Read11_HbmTuplizerEntitymode(Reader.Value);
++ o.@entitymodeSpecified = true;
++ paramsRead[0] = true;
++ }
++ else if (!paramsRead[1] && ((object) Reader.LocalName == (object)id1_class && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@class = Reader.Value;
++ paramsRead[1] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":entity-mode, :class");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations67 = 0;
++ int readerCount67 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ UnknownNode((object)o, @"");
++ }
++ else {
++ UnknownNode((object)o, @"");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations67, ref readerCount67);
++ }
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmTuplizerEntitymode Read11_HbmTuplizerEntitymode(string s) {
++ switch (s) {
++ case @"poco": return global::NHibernate.Cfg.MappingSchema.HbmTuplizerEntitymode.@Poco;
++ case @"xml": return global::NHibernate.Cfg.MappingSchema.HbmTuplizerEntitymode.@Xml;
++ case @"dynamic-map": return global::NHibernate.Cfg.MappingSchema.HbmTuplizerEntitymode.@DynamicMap;
++ default: throw CreateUnknownConstantException(s, typeof(global::NHibernate.Cfg.MappingSchema.HbmTuplizerEntitymode));
++ }
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmClass Read98_HbmClass(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmClass o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmClass();
++ global::NHibernate.Cfg.MappingSchema.HbmMeta[] a_0 = null;
++ int ca_0 = 0;
++ global::NHibernate.Cfg.MappingSchema.HbmSynchronize[] a_3 = null;
++ int ca_3 = 0;
++ global::NHibernate.Cfg.MappingSchema.HbmTuplizer[] a_5 = null;
++ int ca_5 = 0;
++ global::System.Object[] a_10 = null;
++ int ca_10 = 0;
++ global::System.Object[] a_11 = null;
++ int ca_11 = 0;
++ global::NHibernate.Cfg.MappingSchema.HbmFilter[] a_16 = null;
++ int ca_16 = 0;
++ global::NHibernate.Cfg.MappingSchema.HbmResultSet[] a_17 = null;
++ int ca_17 = 0;
++ global::System.Object[] a_18 = null;
++ int ca_18 = 0;
++ bool[] paramsRead = new bool[42];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[19] && ((object) Reader.LocalName == (object)id57_entityname && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@entityname = Reader.Value;
++ paramsRead[19] = true;
++ }
++ else if (!paramsRead[20] && ((object) Reader.LocalName == (object)id28_name && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@name = Reader.Value;
++ paramsRead[20] = true;
++ }
++ else if (!paramsRead[21] && ((object) Reader.LocalName == (object)id60_proxy && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@proxy = Reader.Value;
++ paramsRead[21] = true;
++ }
++ else if (!paramsRead[22] && ((object) Reader.LocalName == (object)id66_lazy && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@lazy = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ o.@lazySpecified = true;
++ paramsRead[22] = true;
++ }
++ else if (!paramsRead[23] && ((object) Reader.LocalName == (object)id157_schemaaction && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@schemaaction = Reader.Value;
++ paramsRead[23] = true;
++ }
++ else if (!paramsRead[24] && ((object) Reader.LocalName == (object)id50_table && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@table = Reader.Value;
++ paramsRead[24] = true;
++ }
++ else if (!paramsRead[25] && ((object) Reader.LocalName == (object)id5_schema && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@schema = Reader.Value;
++ paramsRead[25] = true;
++ }
++ else if (!paramsRead[26] && ((object) Reader.LocalName == (object)id6_catalog && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@catalog = Reader.Value;
++ paramsRead[26] = true;
++ }
++ else if (!paramsRead[27] && ((object) Reader.LocalName == (object)id61_subselect && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@subselect1 = Reader.Value;
++ paramsRead[27] = true;
++ }
++ else if (!paramsRead[28] && ((object) Reader.LocalName == (object)id158_discriminatorvalue && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@discriminatorvalue = Reader.Value;
++ paramsRead[28] = true;
++ }
++ else if (!paramsRead[29] && ((object) Reader.LocalName == (object)id95_mutable && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@mutable = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[29] = true;
++ }
++ else if (!paramsRead[30] && ((object) Reader.LocalName == (object)id67_abstract && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@abstract = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ o.@abstractSpecified = true;
++ paramsRead[30] = true;
++ }
++ else if (!paramsRead[31] && ((object) Reader.LocalName == (object)id159_polymorphism && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@polymorphism = Read96_HbmPolymorphismType(Reader.Value);
++ paramsRead[31] = true;
++ }
++ else if (!paramsRead[32] && ((object) Reader.LocalName == (object)id98_where && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@where = Reader.Value;
++ paramsRead[32] = true;
++ }
++ else if (!paramsRead[33] && ((object) Reader.LocalName == (object)id68_persister && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@persister = Reader.Value;
++ paramsRead[33] = true;
++ }
++ else if (!paramsRead[34] && ((object) Reader.LocalName == (object)id62_dynamicupdate && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@dynamicupdate = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[34] = true;
++ }
++ else if (!paramsRead[35] && ((object) Reader.LocalName == (object)id63_dynamicinsert && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@dynamicinsert = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[35] = true;
++ }
++ else if (!paramsRead[36] && ((object) Reader.LocalName == (object)id70_batchsize && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@batchsize = System.Xml.XmlConvert.ToInt32(Reader.Value);
++ o.@batchsizeSpecified = true;
++ paramsRead[36] = true;
++ }
++ else if (!paramsRead[37] && ((object) Reader.LocalName == (object)id64_selectbeforeupdate && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@selectbeforeupdate = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[37] = true;
++ }
++ else if (!paramsRead[38] && ((object) Reader.LocalName == (object)id102_optimisticlock && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@optimisticlock = Read97_HbmOptimisticLockMode(Reader.Value);
++ paramsRead[38] = true;
++ }
++ else if (!paramsRead[39] && ((object) Reader.LocalName == (object)id69_check && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@check = Reader.Value;
++ paramsRead[39] = true;
++ }
++ else if (!paramsRead[40] && ((object) Reader.LocalName == (object)id160_rowid && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@rowid = Reader.Value;
++ paramsRead[40] = true;
++ }
++ else if (!paramsRead[41] && ((object) Reader.LocalName == (object)id71_node && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@node = Reader.Value;
++ paramsRead[41] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":entity-name, :name, :proxy, :lazy, :schema-action, :table, :schema, :catalog, :subselect, :discriminator-value, :mutable, :abstract, :polymorphism, :where, :persister, :dynamic-update, :dynamic-insert, :batch-size, :select-before-update, :optimistic-lock, :check, :rowid, :node");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@meta = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta), true);
++ o.@synchronize = (global::NHibernate.Cfg.MappingSchema.HbmSynchronize[])ShrinkArray(a_3, ca_3, typeof(global::NHibernate.Cfg.MappingSchema.HbmSynchronize), true);
++ o.@tuplizer = (global::NHibernate.Cfg.MappingSchema.HbmTuplizer[])ShrinkArray(a_5, ca_5, typeof(global::NHibernate.Cfg.MappingSchema.HbmTuplizer), true);
++ o.@Items = (global::System.Object[])ShrinkArray(a_10, ca_10, typeof(global::System.Object), true);
++ o.@Items1 = (global::System.Object[])ShrinkArray(a_11, ca_11, typeof(global::System.Object), true);
++ o.@filter = (global::NHibernate.Cfg.MappingSchema.HbmFilter[])ShrinkArray(a_16, ca_16, typeof(global::NHibernate.Cfg.MappingSchema.HbmFilter), true);
++ o.@resultset = (global::NHibernate.Cfg.MappingSchema.HbmResultSet[])ShrinkArray(a_17, ca_17, typeof(global::NHibernate.Cfg.MappingSchema.HbmResultSet), true);
++ o.@Items2 = (global::System.Object[])ShrinkArray(a_18, ca_18, typeof(global::System.Object), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations68 = 0;
++ int readerCount68 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ if (((object) Reader.LocalName == (object)id13_meta && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])EnsureArrayIndex(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta));a_0[ca_0++] = Read4_HbmMeta(false, true);
++ }
++ else if (!paramsRead[1] && ((object) Reader.LocalName == (object)id61_subselect && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@subselect = Read5_HbmSubselect(false, true);
++ paramsRead[1] = true;
++ }
++ else if (!paramsRead[2] && ((object) Reader.LocalName == (object)id105_cache && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@cache = Read8_HbmCache(false, true);
++ paramsRead[2] = true;
++ }
++ else if (((object) Reader.LocalName == (object)id49_synchronize && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_3 = (global::NHibernate.Cfg.MappingSchema.HbmSynchronize[])EnsureArrayIndex(a_3, ca_3, typeof(global::NHibernate.Cfg.MappingSchema.HbmSynchronize));a_3[ca_3++] = Read9_HbmSynchronize(false, true);
++ }
++ else if (!paramsRead[4] && ((object) Reader.LocalName == (object)id41_comment && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@comment = Read10_HbmComment(false, true);
++ paramsRead[4] = true;
++ }
++ else if (((object) Reader.LocalName == (object)id72_tuplizer && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_5 = (global::NHibernate.Cfg.MappingSchema.HbmTuplizer[])EnsureArrayIndex(a_5, ca_5, typeof(global::NHibernate.Cfg.MappingSchema.HbmTuplizer));a_5[ca_5++] = Read12_HbmTuplizer(false, true);
++ }
++ else if (!paramsRead[6] && ((object) Reader.LocalName == (object)id161_id && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@Item = Read17_HbmId(false, true);
++ paramsRead[6] = true;
++ }
++ else if (!paramsRead[6] && ((object) Reader.LocalName == (object)id162_compositeid && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@Item = Read23_HbmCompositeId(false, true);
++ paramsRead[6] = true;
++ }
++ else if (!paramsRead[7] && ((object) Reader.LocalName == (object)id163_discriminator && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@discriminator = Read25_HbmDiscriminator(false, true);
++ paramsRead[7] = true;
++ }
++ else if (!paramsRead[8] && ((object) Reader.LocalName == (object)id164_naturalid && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@naturalid = Read70_HbmNaturalId(false, true);
++ paramsRead[8] = true;
++ }
++ else if (!paramsRead[9] && ((object) Reader.LocalName == (object)id165_timestamp && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@Item1 = Read74_HbmTimestamp(false, true);
++ paramsRead[9] = true;
++ }
++ else if (!paramsRead[9] && ((object) Reader.LocalName == (object)id166_version && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@Item1 = Read75_HbmVersion(false, true);
++ paramsRead[9] = true;
++ }
++ else if (((object) Reader.LocalName == (object)id80_onetoone && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_10 = (global::System.Object[])EnsureArrayIndex(a_10, ca_10, typeof(global::System.Object));a_10[ca_10++] = Read61_HbmOneToOne(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id85_array && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_10 = (global::System.Object[])EnsureArrayIndex(a_10, ca_10, typeof(global::System.Object));a_10[ca_10++] = Read60_HbmArray(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id86_bag && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_10 = (global::System.Object[])EnsureArrayIndex(a_10, ca_10, typeof(global::System.Object));a_10[ca_10++] = Read50_HbmBag(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id77_component && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_10 = (global::System.Object[])EnsureArrayIndex(a_10, ca_10, typeof(global::System.Object));a_10[ca_10++] = Read68_HbmComponent(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id75_dynamiccomponent && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_10 = (global::System.Object[])EnsureArrayIndex(a_10, ca_10, typeof(global::System.Object));a_10[ca_10++] = Read69_HbmDynamicComponent(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id83_idbag && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_10 = (global::System.Object[])EnsureArrayIndex(a_10, ca_10, typeof(global::System.Object));a_10[ca_10++] = Read66_HbmIdbag(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id76_list && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_10 = (global::System.Object[])EnsureArrayIndex(a_10, ca_10, typeof(global::System.Object));a_10[ca_10++] = Read67_HbmList(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id78_manytoone && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_10 = (global::System.Object[])EnsureArrayIndex(a_10, ca_10, typeof(global::System.Object));a_10[ca_10++] = Read29_HbmManyToOne(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id74_map && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_10 = (global::System.Object[])EnsureArrayIndex(a_10, ca_10, typeof(global::System.Object));a_10[ca_10++] = Read58_HbmMap(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id84_any && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_10 = (global::System.Object[])EnsureArrayIndex(a_10, ca_10, typeof(global::System.Object));a_10[ca_10++] = Read36_HbmAny(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id82_primitivearray && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_10 = (global::System.Object[])EnsureArrayIndex(a_10, ca_10, typeof(global::System.Object));a_10[ca_10++] = Read64_HbmPrimitiveArray(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id79_properties && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_10 = (global::System.Object[])EnsureArrayIndex(a_10, ca_10, typeof(global::System.Object));a_10[ca_10++] = Read76_HbmProperties(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id59_property && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_10 = (global::System.Object[])EnsureArrayIndex(a_10, ca_10, typeof(global::System.Object));a_10[ca_10++] = Read34_HbmProperty(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id81_set && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_10 = (global::System.Object[])EnsureArrayIndex(a_10, ca_10, typeof(global::System.Object));a_10[ca_10++] = Read49_HbmSet(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id167_join && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_11 = (global::System.Object[])EnsureArrayIndex(a_11, ca_11, typeof(global::System.Object));a_11[ca_11++] = Read78_HbmJoin(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id18_joinedsubclass && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_11 = (global::System.Object[])EnsureArrayIndex(a_11, ca_11, typeof(global::System.Object));a_11[ca_11++] = Read93_HbmJoinedSubclass(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id17_subclass && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_11 = (global::System.Object[])EnsureArrayIndex(a_11, ca_11, typeof(global::System.Object));a_11[ca_11++] = Read94_HbmSubclass(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id16_unionsubclass && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_11 = (global::System.Object[])EnsureArrayIndex(a_11, ca_11, typeof(global::System.Object));a_11[ca_11++] = Read95_HbmUnionSubclass(false, true);
++ }
++ else if (!paramsRead[12] && ((object) Reader.LocalName == (object)id87_loader && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@loader = Read44_HbmLoader(false, true);
++ paramsRead[12] = true;
++ }
++ else if (!paramsRead[13] && ((object) Reader.LocalName == (object)id88_sqlinsert && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@sqlinsert = Read46_HbmCustomSQL(false, true);
++ paramsRead[13] = true;
++ }
++ else if (!paramsRead[14] && ((object) Reader.LocalName == (object)id89_sqlupdate && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@sqlupdate = Read46_HbmCustomSQL(false, true);
++ paramsRead[14] = true;
++ }
++ else if (!paramsRead[15] && ((object) Reader.LocalName == (object)id90_sqldelete && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@sqldelete = Read46_HbmCustomSQL(false, true);
++ paramsRead[15] = true;
++ }
++ else if (((object) Reader.LocalName == (object)id112_filter && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_16 = (global::NHibernate.Cfg.MappingSchema.HbmFilter[])EnsureArrayIndex(a_16, ca_16, typeof(global::NHibernate.Cfg.MappingSchema.HbmFilter));a_16[ca_16++] = Read41_HbmFilter(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id19_resultset && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_17 = (global::NHibernate.Cfg.MappingSchema.HbmResultSet[])EnsureArrayIndex(a_17, ca_17, typeof(global::NHibernate.Cfg.MappingSchema.HbmResultSet));a_17[ca_17++] = Read87_HbmResultSet(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id21_query && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_18 = (global::System.Object[])EnsureArrayIndex(a_18, ca_18, typeof(global::System.Object));a_18[ca_18++] = Read91_HbmQuery(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id20_sqlquery && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_18 = (global::System.Object[])EnsureArrayIndex(a_18, ca_18, typeof(global::System.Object));a_18[ca_18++] = Read92_HbmSqlQuery(false, true);
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:meta, urn:nhibernate-mapping-2.2:subselect, urn:nhibernate-mapping-2.2:cache, urn:nhibernate-mapping-2.2:synchronize, urn:nhibernate-mapping-2.2:comment, urn:nhibernate-mapping-2.2:tuplizer, urn:nhibernate-mapping-2.2:id, urn:nhibernate-mapping-2.2:composite-id, urn:nhibernate-mapping-2.2:discriminator, urn:nhibernate-mapping-2.2:natural-id, urn:nhibernate-mapping-2.2:timestamp, urn:nhibernate-mapping-2.2:version, urn:nhibernate-mapping-2.2:one-to-one, urn:nhibernate-mapping-2.2:array, urn:nhibernate-mapping-2.2:bag, urn:nhibernate-mapping-2.2:component, urn:nhibernate-mapping-2.2:dynamic-component, urn:nhibernate-mapping-2.2:idbag, urn:nhibernate-mapping-2.2:list, urn:nhibernate-mapping-2.2:many-to-one, urn:nhibernate-mapping-2.2:map, urn:nhibernate-mapping-2.2:any, urn:nhibernate-mapping-2.2:primitive-array, urn:nhibernate-mapping-2.2:properties, urn:nhibernate-mapping-2.2:property, urn:nhibernate-mapping-2.2:set, urn:nhibernate-mapping-2.2:join, urn:nhibernate-mapping-2.2:joined-subclass, urn:nhibernate-mapping-2.2:subclass, urn:nhibernate-mapping-2.2:union-subclass, urn:nhibernate-mapping-2.2:loader, urn:nhibernate-mapping-2.2:sql-insert, urn:nhibernate-mapping-2.2:sql-update, urn:nhibernate-mapping-2.2:sql-delete, urn:nhibernate-mapping-2.2:filter, urn:nhibernate-mapping-2.2:resultset, urn:nhibernate-mapping-2.2:query, urn:nhibernate-mapping-2.2:sql-query");
++ }
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:meta, urn:nhibernate-mapping-2.2:subselect, urn:nhibernate-mapping-2.2:cache, urn:nhibernate-mapping-2.2:synchronize, urn:nhibernate-mapping-2.2:comment, urn:nhibernate-mapping-2.2:tuplizer, urn:nhibernate-mapping-2.2:id, urn:nhibernate-mapping-2.2:composite-id, urn:nhibernate-mapping-2.2:discriminator, urn:nhibernate-mapping-2.2:natural-id, urn:nhibernate-mapping-2.2:timestamp, urn:nhibernate-mapping-2.2:version, urn:nhibernate-mapping-2.2:one-to-one, urn:nhibernate-mapping-2.2:array, urn:nhibernate-mapping-2.2:bag, urn:nhibernate-mapping-2.2:component, urn:nhibernate-mapping-2.2:dynamic-component, urn:nhibernate-mapping-2.2:idbag, urn:nhibernate-mapping-2.2:list, urn:nhibernate-mapping-2.2:many-to-one, urn:nhibernate-mapping-2.2:map, urn:nhibernate-mapping-2.2:any, urn:nhibernate-mapping-2.2:primitive-array, urn:nhibernate-mapping-2.2:properties, urn:nhibernate-mapping-2.2:property, urn:nhibernate-mapping-2.2:set, urn:nhibernate-mapping-2.2:join, urn:nhibernate-mapping-2.2:joined-subclass, urn:nhibernate-mapping-2.2:subclass, urn:nhibernate-mapping-2.2:union-subclass, urn:nhibernate-mapping-2.2:loader, urn:nhibernate-mapping-2.2:sql-insert, urn:nhibernate-mapping-2.2:sql-update, urn:nhibernate-mapping-2.2:sql-delete, urn:nhibernate-mapping-2.2:filter, urn:nhibernate-mapping-2.2:resultset, urn:nhibernate-mapping-2.2:query, urn:nhibernate-mapping-2.2:sql-query");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations68, ref readerCount68);
++ }
++ o.@meta = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta), true);
++ o.@synchronize = (global::NHibernate.Cfg.MappingSchema.HbmSynchronize[])ShrinkArray(a_3, ca_3, typeof(global::NHibernate.Cfg.MappingSchema.HbmSynchronize), true);
++ o.@tuplizer = (global::NHibernate.Cfg.MappingSchema.HbmTuplizer[])ShrinkArray(a_5, ca_5, typeof(global::NHibernate.Cfg.MappingSchema.HbmTuplizer), true);
++ o.@Items = (global::System.Object[])ShrinkArray(a_10, ca_10, typeof(global::System.Object), true);
++ o.@Items1 = (global::System.Object[])ShrinkArray(a_11, ca_11, typeof(global::System.Object), true);
++ o.@filter = (global::NHibernate.Cfg.MappingSchema.HbmFilter[])ShrinkArray(a_16, ca_16, typeof(global::NHibernate.Cfg.MappingSchema.HbmFilter), true);
++ o.@resultset = (global::NHibernate.Cfg.MappingSchema.HbmResultSet[])ShrinkArray(a_17, ca_17, typeof(global::NHibernate.Cfg.MappingSchema.HbmResultSet), true);
++ o.@Items2 = (global::System.Object[])ShrinkArray(a_18, ca_18, typeof(global::System.Object), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmUnionSubclass Read95_HbmUnionSubclass(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmUnionSubclass o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmUnionSubclass();
++ global::NHibernate.Cfg.MappingSchema.HbmMeta[] a_0 = null;
++ int ca_0 = 0;
++ global::NHibernate.Cfg.MappingSchema.HbmSynchronize[] a_2 = null;
++ int ca_2 = 0;
++ global::NHibernate.Cfg.MappingSchema.HbmTuplizer[] a_4 = null;
++ int ca_4 = 0;
++ global::System.Object[] a_5 = null;
++ int ca_5 = 0;
++ global::NHibernate.Cfg.MappingSchema.HbmUnionSubclass[] a_6 = null;
++ int ca_6 = 0;
++ global::NHibernate.Cfg.MappingSchema.HbmResultSet[] a_11 = null;
++ int ca_11 = 0;
++ global::System.Object[] a_12 = null;
++ int ca_12 = 0;
++ bool[] paramsRead = new bool[30];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[13] && ((object) Reader.LocalName == (object)id57_entityname && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@entityname = Reader.Value;
++ paramsRead[13] = true;
++ }
++ else if (!paramsRead[14] && ((object) Reader.LocalName == (object)id28_name && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@name = Reader.Value;
++ paramsRead[14] = true;
++ }
++ else if (!paramsRead[15] && ((object) Reader.LocalName == (object)id60_proxy && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@proxy = Reader.Value;
++ paramsRead[15] = true;
++ }
++ else if (!paramsRead[16] && ((object) Reader.LocalName == (object)id50_table && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@table = Reader.Value;
++ paramsRead[16] = true;
++ }
++ else if (!paramsRead[17] && ((object) Reader.LocalName == (object)id5_schema && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@schema = Reader.Value;
++ paramsRead[17] = true;
++ }
++ else if (!paramsRead[18] && ((object) Reader.LocalName == (object)id6_catalog && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@catalog = Reader.Value;
++ paramsRead[18] = true;
++ }
++ else if (!paramsRead[19] && ((object) Reader.LocalName == (object)id61_subselect && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@subselect1 = Reader.Value;
++ paramsRead[19] = true;
++ }
++ else if (!paramsRead[20] && ((object) Reader.LocalName == (object)id62_dynamicupdate && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@dynamicupdate = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[20] = true;
++ }
++ else if (!paramsRead[21] && ((object) Reader.LocalName == (object)id63_dynamicinsert && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@dynamicinsert = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[21] = true;
++ }
++ else if (!paramsRead[22] && ((object) Reader.LocalName == (object)id64_selectbeforeupdate && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@selectbeforeupdate = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[22] = true;
++ }
++ else if (!paramsRead[23] && ((object) Reader.LocalName == (object)id65_extends && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@extends = Reader.Value;
++ paramsRead[23] = true;
++ }
++ else if (!paramsRead[24] && ((object) Reader.LocalName == (object)id66_lazy && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@lazy = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ o.@lazySpecified = true;
++ paramsRead[24] = true;
++ }
++ else if (!paramsRead[25] && ((object) Reader.LocalName == (object)id67_abstract && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@abstract = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ o.@abstractSpecified = true;
++ paramsRead[25] = true;
++ }
++ else if (!paramsRead[26] && ((object) Reader.LocalName == (object)id68_persister && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@persister = Reader.Value;
++ paramsRead[26] = true;
++ }
++ else if (!paramsRead[27] && ((object) Reader.LocalName == (object)id69_check && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@check = Reader.Value;
++ paramsRead[27] = true;
++ }
++ else if (!paramsRead[28] && ((object) Reader.LocalName == (object)id70_batchsize && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@batchsize = CollapseWhitespace(Reader.Value);
++ paramsRead[28] = true;
++ }
++ else if (!paramsRead[29] && ((object) Reader.LocalName == (object)id71_node && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@node = Reader.Value;
++ paramsRead[29] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":entity-name, :name, :proxy, :table, :schema, :catalog, :subselect, :dynamic-update, :dynamic-insert, :select-before-update, :extends, :lazy, :abstract, :persister, :check, :batch-size, :node");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@meta = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta), true);
++ o.@synchronize = (global::NHibernate.Cfg.MappingSchema.HbmSynchronize[])ShrinkArray(a_2, ca_2, typeof(global::NHibernate.Cfg.MappingSchema.HbmSynchronize), true);
++ o.@tuplizer = (global::NHibernate.Cfg.MappingSchema.HbmTuplizer[])ShrinkArray(a_4, ca_4, typeof(global::NHibernate.Cfg.MappingSchema.HbmTuplizer), true);
++ o.@Items = (global::System.Object[])ShrinkArray(a_5, ca_5, typeof(global::System.Object), true);
++ o.@unionsubclass1 = (global::NHibernate.Cfg.MappingSchema.HbmUnionSubclass[])ShrinkArray(a_6, ca_6, typeof(global::NHibernate.Cfg.MappingSchema.HbmUnionSubclass), true);
++ o.@resultset = (global::NHibernate.Cfg.MappingSchema.HbmResultSet[])ShrinkArray(a_11, ca_11, typeof(global::NHibernate.Cfg.MappingSchema.HbmResultSet), true);
++ o.@Items1 = (global::System.Object[])ShrinkArray(a_12, ca_12, typeof(global::System.Object), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations69 = 0;
++ int readerCount69 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ if (((object) Reader.LocalName == (object)id13_meta && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])EnsureArrayIndex(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta));a_0[ca_0++] = Read4_HbmMeta(false, true);
++ }
++ else if (!paramsRead[1] && ((object) Reader.LocalName == (object)id61_subselect && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@subselect = Read5_HbmSubselect(false, true);
++ paramsRead[1] = true;
++ }
++ else if (((object) Reader.LocalName == (object)id49_synchronize && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_2 = (global::NHibernate.Cfg.MappingSchema.HbmSynchronize[])EnsureArrayIndex(a_2, ca_2, typeof(global::NHibernate.Cfg.MappingSchema.HbmSynchronize));a_2[ca_2++] = Read9_HbmSynchronize(false, true);
++ }
++ else if (!paramsRead[3] && ((object) Reader.LocalName == (object)id41_comment && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@comment = Read10_HbmComment(false, true);
++ paramsRead[3] = true;
++ }
++ else if (((object) Reader.LocalName == (object)id72_tuplizer && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_4 = (global::NHibernate.Cfg.MappingSchema.HbmTuplizer[])EnsureArrayIndex(a_4, ca_4, typeof(global::NHibernate.Cfg.MappingSchema.HbmTuplizer));a_4[ca_4++] = Read12_HbmTuplizer(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id80_onetoone && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_5 = (global::System.Object[])EnsureArrayIndex(a_5, ca_5, typeof(global::System.Object));a_5[ca_5++] = Read61_HbmOneToOne(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id86_bag && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_5 = (global::System.Object[])EnsureArrayIndex(a_5, ca_5, typeof(global::System.Object));a_5[ca_5++] = Read50_HbmBag(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id77_component && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_5 = (global::System.Object[])EnsureArrayIndex(a_5, ca_5, typeof(global::System.Object));a_5[ca_5++] = Read68_HbmComponent(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id75_dynamiccomponent && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_5 = (global::System.Object[])EnsureArrayIndex(a_5, ca_5, typeof(global::System.Object));a_5[ca_5++] = Read69_HbmDynamicComponent(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id83_idbag && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_5 = (global::System.Object[])EnsureArrayIndex(a_5, ca_5, typeof(global::System.Object));a_5[ca_5++] = Read66_HbmIdbag(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id76_list && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_5 = (global::System.Object[])EnsureArrayIndex(a_5, ca_5, typeof(global::System.Object));a_5[ca_5++] = Read67_HbmList(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id78_manytoone && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_5 = (global::System.Object[])EnsureArrayIndex(a_5, ca_5, typeof(global::System.Object));a_5[ca_5++] = Read29_HbmManyToOne(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id74_map && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_5 = (global::System.Object[])EnsureArrayIndex(a_5, ca_5, typeof(global::System.Object));a_5[ca_5++] = Read58_HbmMap(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id85_array && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_5 = (global::System.Object[])EnsureArrayIndex(a_5, ca_5, typeof(global::System.Object));a_5[ca_5++] = Read60_HbmArray(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id82_primitivearray && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_5 = (global::System.Object[])EnsureArrayIndex(a_5, ca_5, typeof(global::System.Object));a_5[ca_5++] = Read64_HbmPrimitiveArray(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id79_properties && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_5 = (global::System.Object[])EnsureArrayIndex(a_5, ca_5, typeof(global::System.Object));a_5[ca_5++] = Read76_HbmProperties(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id59_property && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_5 = (global::System.Object[])EnsureArrayIndex(a_5, ca_5, typeof(global::System.Object));a_5[ca_5++] = Read34_HbmProperty(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id81_set && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_5 = (global::System.Object[])EnsureArrayIndex(a_5, ca_5, typeof(global::System.Object));a_5[ca_5++] = Read49_HbmSet(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id84_any && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_5 = (global::System.Object[])EnsureArrayIndex(a_5, ca_5, typeof(global::System.Object));a_5[ca_5++] = Read36_HbmAny(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id16_unionsubclass && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_6 = (global::NHibernate.Cfg.MappingSchema.HbmUnionSubclass[])EnsureArrayIndex(a_6, ca_6, typeof(global::NHibernate.Cfg.MappingSchema.HbmUnionSubclass));a_6[ca_6++] = Read95_HbmUnionSubclass(false, true);
++ }
++ else if (!paramsRead[7] && ((object) Reader.LocalName == (object)id87_loader && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@loader = Read44_HbmLoader(false, true);
++ paramsRead[7] = true;
++ }
++ else if (!paramsRead[8] && ((object) Reader.LocalName == (object)id88_sqlinsert && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@sqlinsert = Read46_HbmCustomSQL(false, true);
++ paramsRead[8] = true;
++ }
++ else if (!paramsRead[9] && ((object) Reader.LocalName == (object)id89_sqlupdate && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@sqlupdate = Read46_HbmCustomSQL(false, true);
++ paramsRead[9] = true;
++ }
++ else if (!paramsRead[10] && ((object) Reader.LocalName == (object)id90_sqldelete && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@sqldelete = Read46_HbmCustomSQL(false, true);
++ paramsRead[10] = true;
++ }
++ else if (((object) Reader.LocalName == (object)id19_resultset && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_11 = (global::NHibernate.Cfg.MappingSchema.HbmResultSet[])EnsureArrayIndex(a_11, ca_11, typeof(global::NHibernate.Cfg.MappingSchema.HbmResultSet));a_11[ca_11++] = Read87_HbmResultSet(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id20_sqlquery && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_12 = (global::System.Object[])EnsureArrayIndex(a_12, ca_12, typeof(global::System.Object));a_12[ca_12++] = Read92_HbmSqlQuery(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id21_query && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_12 = (global::System.Object[])EnsureArrayIndex(a_12, ca_12, typeof(global::System.Object));a_12[ca_12++] = Read91_HbmQuery(false, true);
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:meta, urn:nhibernate-mapping-2.2:subselect, urn:nhibernate-mapping-2.2:synchronize, urn:nhibernate-mapping-2.2:comment, urn:nhibernate-mapping-2.2:tuplizer, urn:nhibernate-mapping-2.2:one-to-one, urn:nhibernate-mapping-2.2:bag, urn:nhibernate-mapping-2.2:component, urn:nhibernate-mapping-2.2:dynamic-component, urn:nhibernate-mapping-2.2:idbag, urn:nhibernate-mapping-2.2:list, urn:nhibernate-mapping-2.2:many-to-one, urn:nhibernate-mapping-2.2:map, urn:nhibernate-mapping-2.2:array, urn:nhibernate-mapping-2.2:primitive-array, urn:nhibernate-mapping-2.2:properties, urn:nhibernate-mapping-2.2:property, urn:nhibernate-mapping-2.2:set, urn:nhibernate-mapping-2.2:any, urn:nhibernate-mapping-2.2:union-subclass, urn:nhibernate-mapping-2.2:loader, urn:nhibernate-mapping-2.2:sql-insert, urn:nhibernate-mapping-2.2:sql-update, urn:nhibernate-mapping-2.2:sql-delete, urn:nhibernate-mapping-2.2:resultset, urn:nhibernate-mapping-2.2:sql-query, urn:nhibernate-mapping-2.2:query");
++ }
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:meta, urn:nhibernate-mapping-2.2:subselect, urn:nhibernate-mapping-2.2:synchronize, urn:nhibernate-mapping-2.2:comment, urn:nhibernate-mapping-2.2:tuplizer, urn:nhibernate-mapping-2.2:one-to-one, urn:nhibernate-mapping-2.2:bag, urn:nhibernate-mapping-2.2:component, urn:nhibernate-mapping-2.2:dynamic-component, urn:nhibernate-mapping-2.2:idbag, urn:nhibernate-mapping-2.2:list, urn:nhibernate-mapping-2.2:many-to-one, urn:nhibernate-mapping-2.2:map, urn:nhibernate-mapping-2.2:array, urn:nhibernate-mapping-2.2:primitive-array, urn:nhibernate-mapping-2.2:properties, urn:nhibernate-mapping-2.2:property, urn:nhibernate-mapping-2.2:set, urn:nhibernate-mapping-2.2:any, urn:nhibernate-mapping-2.2:union-subclass, urn:nhibernate-mapping-2.2:loader, urn:nhibernate-mapping-2.2:sql-insert, urn:nhibernate-mapping-2.2:sql-update, urn:nhibernate-mapping-2.2:sql-delete, urn:nhibernate-mapping-2.2:resultset, urn:nhibernate-mapping-2.2:sql-query, urn:nhibernate-mapping-2.2:query");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations69, ref readerCount69);
++ }
++ o.@meta = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta), true);
++ o.@synchronize = (global::NHibernate.Cfg.MappingSchema.HbmSynchronize[])ShrinkArray(a_2, ca_2, typeof(global::NHibernate.Cfg.MappingSchema.HbmSynchronize), true);
++ o.@tuplizer = (global::NHibernate.Cfg.MappingSchema.HbmTuplizer[])ShrinkArray(a_4, ca_4, typeof(global::NHibernate.Cfg.MappingSchema.HbmTuplizer), true);
++ o.@Items = (global::System.Object[])ShrinkArray(a_5, ca_5, typeof(global::System.Object), true);
++ o.@unionsubclass1 = (global::NHibernate.Cfg.MappingSchema.HbmUnionSubclass[])ShrinkArray(a_6, ca_6, typeof(global::NHibernate.Cfg.MappingSchema.HbmUnionSubclass), true);
++ o.@resultset = (global::NHibernate.Cfg.MappingSchema.HbmResultSet[])ShrinkArray(a_11, ca_11, typeof(global::NHibernate.Cfg.MappingSchema.HbmResultSet), true);
++ o.@Items1 = (global::System.Object[])ShrinkArray(a_12, ca_12, typeof(global::System.Object), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmSubclass Read94_HbmSubclass(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmSubclass o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmSubclass();
++ global::NHibernate.Cfg.MappingSchema.HbmMeta[] a_0 = null;
++ int ca_0 = 0;
++ global::NHibernate.Cfg.MappingSchema.HbmTuplizer[] a_1 = null;
++ int ca_1 = 0;
++ global::NHibernate.Cfg.MappingSchema.HbmSynchronize[] a_2 = null;
++ int ca_2 = 0;
++ global::System.Object[] a_3 = null;
++ int ca_3 = 0;
++ global::NHibernate.Cfg.MappingSchema.HbmJoin[] a_4 = null;
++ int ca_4 = 0;
++ global::NHibernate.Cfg.MappingSchema.HbmSubclass[] a_5 = null;
++ int ca_5 = 0;
++ global::NHibernate.Cfg.MappingSchema.HbmResultSet[] a_10 = null;
++ int ca_10 = 0;
++ global::System.Object[] a_11 = null;
++ int ca_11 = 0;
++ bool[] paramsRead = new bool[25];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[12] && ((object) Reader.LocalName == (object)id57_entityname && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@entityname = Reader.Value;
++ paramsRead[12] = true;
++ }
++ else if (!paramsRead[13] && ((object) Reader.LocalName == (object)id28_name && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@name = Reader.Value;
++ paramsRead[13] = true;
++ }
++ else if (!paramsRead[14] && ((object) Reader.LocalName == (object)id60_proxy && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@proxy = Reader.Value;
++ paramsRead[14] = true;
++ }
++ else if (!paramsRead[15] && ((object) Reader.LocalName == (object)id158_discriminatorvalue && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@discriminatorvalue = Reader.Value;
++ paramsRead[15] = true;
++ }
++ else if (!paramsRead[16] && ((object) Reader.LocalName == (object)id62_dynamicupdate && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@dynamicupdate = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[16] = true;
++ }
++ else if (!paramsRead[17] && ((object) Reader.LocalName == (object)id63_dynamicinsert && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@dynamicinsert = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[17] = true;
++ }
++ else if (!paramsRead[18] && ((object) Reader.LocalName == (object)id64_selectbeforeupdate && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@selectbeforeupdate = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[18] = true;
++ }
++ else if (!paramsRead[19] && ((object) Reader.LocalName == (object)id65_extends && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@extends = Reader.Value;
++ paramsRead[19] = true;
++ }
++ else if (!paramsRead[20] && ((object) Reader.LocalName == (object)id66_lazy && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@lazy = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ o.@lazySpecified = true;
++ paramsRead[20] = true;
++ }
++ else if (!paramsRead[21] && ((object) Reader.LocalName == (object)id67_abstract && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@abstract = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ o.@abstractSpecified = true;
++ paramsRead[21] = true;
++ }
++ else if (!paramsRead[22] && ((object) Reader.LocalName == (object)id68_persister && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@persister = Reader.Value;
++ paramsRead[22] = true;
++ }
++ else if (!paramsRead[23] && ((object) Reader.LocalName == (object)id70_batchsize && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@batchsize = CollapseWhitespace(Reader.Value);
++ paramsRead[23] = true;
++ }
++ else if (!paramsRead[24] && ((object) Reader.LocalName == (object)id71_node && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@node = Reader.Value;
++ paramsRead[24] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":entity-name, :name, :proxy, :discriminator-value, :dynamic-update, :dynamic-insert, :select-before-update, :extends, :lazy, :abstract, :persister, :batch-size, :node");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@meta = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta), true);
++ o.@tuplizer = (global::NHibernate.Cfg.MappingSchema.HbmTuplizer[])ShrinkArray(a_1, ca_1, typeof(global::NHibernate.Cfg.MappingSchema.HbmTuplizer), true);
++ o.@synchronize = (global::NHibernate.Cfg.MappingSchema.HbmSynchronize[])ShrinkArray(a_2, ca_2, typeof(global::NHibernate.Cfg.MappingSchema.HbmSynchronize), true);
++ o.@Items = (global::System.Object[])ShrinkArray(a_3, ca_3, typeof(global::System.Object), true);
++ o.@join = (global::NHibernate.Cfg.MappingSchema.HbmJoin[])ShrinkArray(a_4, ca_4, typeof(global::NHibernate.Cfg.MappingSchema.HbmJoin), true);
++ o.@subclass1 = (global::NHibernate.Cfg.MappingSchema.HbmSubclass[])ShrinkArray(a_5, ca_5, typeof(global::NHibernate.Cfg.MappingSchema.HbmSubclass), true);
++ o.@resultset = (global::NHibernate.Cfg.MappingSchema.HbmResultSet[])ShrinkArray(a_10, ca_10, typeof(global::NHibernate.Cfg.MappingSchema.HbmResultSet), true);
++ o.@Items1 = (global::System.Object[])ShrinkArray(a_11, ca_11, typeof(global::System.Object), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations70 = 0;
++ int readerCount70 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ if (((object) Reader.LocalName == (object)id13_meta && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])EnsureArrayIndex(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta));a_0[ca_0++] = Read4_HbmMeta(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id72_tuplizer && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_1 = (global::NHibernate.Cfg.MappingSchema.HbmTuplizer[])EnsureArrayIndex(a_1, ca_1, typeof(global::NHibernate.Cfg.MappingSchema.HbmTuplizer));a_1[ca_1++] = Read12_HbmTuplizer(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id49_synchronize && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_2 = (global::NHibernate.Cfg.MappingSchema.HbmSynchronize[])EnsureArrayIndex(a_2, ca_2, typeof(global::NHibernate.Cfg.MappingSchema.HbmSynchronize));a_2[ca_2++] = Read9_HbmSynchronize(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id59_property && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_3 = (global::System.Object[])EnsureArrayIndex(a_3, ca_3, typeof(global::System.Object));a_3[ca_3++] = Read34_HbmProperty(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id82_primitivearray && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_3 = (global::System.Object[])EnsureArrayIndex(a_3, ca_3, typeof(global::System.Object));a_3[ca_3++] = Read64_HbmPrimitiveArray(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id75_dynamiccomponent && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_3 = (global::System.Object[])EnsureArrayIndex(a_3, ca_3, typeof(global::System.Object));a_3[ca_3++] = Read69_HbmDynamicComponent(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id81_set && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_3 = (global::System.Object[])EnsureArrayIndex(a_3, ca_3, typeof(global::System.Object));a_3[ca_3++] = Read49_HbmSet(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id80_onetoone && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_3 = (global::System.Object[])EnsureArrayIndex(a_3, ca_3, typeof(global::System.Object));a_3[ca_3++] = Read61_HbmOneToOne(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id84_any && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_3 = (global::System.Object[])EnsureArrayIndex(a_3, ca_3, typeof(global::System.Object));a_3[ca_3++] = Read36_HbmAny(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id85_array && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_3 = (global::System.Object[])EnsureArrayIndex(a_3, ca_3, typeof(global::System.Object));a_3[ca_3++] = Read60_HbmArray(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id74_map && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_3 = (global::System.Object[])EnsureArrayIndex(a_3, ca_3, typeof(global::System.Object));a_3[ca_3++] = Read58_HbmMap(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id83_idbag && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_3 = (global::System.Object[])EnsureArrayIndex(a_3, ca_3, typeof(global::System.Object));a_3[ca_3++] = Read66_HbmIdbag(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id76_list && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_3 = (global::System.Object[])EnsureArrayIndex(a_3, ca_3, typeof(global::System.Object));a_3[ca_3++] = Read67_HbmList(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id86_bag && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_3 = (global::System.Object[])EnsureArrayIndex(a_3, ca_3, typeof(global::System.Object));a_3[ca_3++] = Read50_HbmBag(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id78_manytoone && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_3 = (global::System.Object[])EnsureArrayIndex(a_3, ca_3, typeof(global::System.Object));a_3[ca_3++] = Read29_HbmManyToOne(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id77_component && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_3 = (global::System.Object[])EnsureArrayIndex(a_3, ca_3, typeof(global::System.Object));a_3[ca_3++] = Read68_HbmComponent(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id167_join && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_4 = (global::NHibernate.Cfg.MappingSchema.HbmJoin[])EnsureArrayIndex(a_4, ca_4, typeof(global::NHibernate.Cfg.MappingSchema.HbmJoin));a_4[ca_4++] = Read78_HbmJoin(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id17_subclass && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_5 = (global::NHibernate.Cfg.MappingSchema.HbmSubclass[])EnsureArrayIndex(a_5, ca_5, typeof(global::NHibernate.Cfg.MappingSchema.HbmSubclass));a_5[ca_5++] = Read94_HbmSubclass(false, true);
++ }
++ else if (!paramsRead[6] && ((object) Reader.LocalName == (object)id87_loader && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@loader = Read44_HbmLoader(false, true);
++ paramsRead[6] = true;
++ }
++ else if (!paramsRead[7] && ((object) Reader.LocalName == (object)id88_sqlinsert && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@sqlinsert = Read46_HbmCustomSQL(false, true);
++ paramsRead[7] = true;
++ }
++ else if (!paramsRead[8] && ((object) Reader.LocalName == (object)id89_sqlupdate && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@sqlupdate = Read46_HbmCustomSQL(false, true);
++ paramsRead[8] = true;
++ }
++ else if (!paramsRead[9] && ((object) Reader.LocalName == (object)id90_sqldelete && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@sqldelete = Read46_HbmCustomSQL(false, true);
++ paramsRead[9] = true;
++ }
++ else if (((object) Reader.LocalName == (object)id19_resultset && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_10 = (global::NHibernate.Cfg.MappingSchema.HbmResultSet[])EnsureArrayIndex(a_10, ca_10, typeof(global::NHibernate.Cfg.MappingSchema.HbmResultSet));a_10[ca_10++] = Read87_HbmResultSet(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id21_query && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_11 = (global::System.Object[])EnsureArrayIndex(a_11, ca_11, typeof(global::System.Object));a_11[ca_11++] = Read91_HbmQuery(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id20_sqlquery && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_11 = (global::System.Object[])EnsureArrayIndex(a_11, ca_11, typeof(global::System.Object));a_11[ca_11++] = Read92_HbmSqlQuery(false, true);
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:meta, urn:nhibernate-mapping-2.2:tuplizer, urn:nhibernate-mapping-2.2:synchronize, urn:nhibernate-mapping-2.2:property, urn:nhibernate-mapping-2.2:primitive-array, urn:nhibernate-mapping-2.2:dynamic-component, urn:nhibernate-mapping-2.2:set, urn:nhibernate-mapping-2.2:one-to-one, urn:nhibernate-mapping-2.2:any, urn:nhibernate-mapping-2.2:array, urn:nhibernate-mapping-2.2:map, urn:nhibernate-mapping-2.2:idbag, urn:nhibernate-mapping-2.2:list, urn:nhibernate-mapping-2.2:bag, urn:nhibernate-mapping-2.2:many-to-one, urn:nhibernate-mapping-2.2:component, urn:nhibernate-mapping-2.2:join, urn:nhibernate-mapping-2.2:subclass, urn:nhibernate-mapping-2.2:loader, urn:nhibernate-mapping-2.2:sql-insert, urn:nhibernate-mapping-2.2:sql-update, urn:nhibernate-mapping-2.2:sql-delete, urn:nhibernate-mapping-2.2:resultset, urn:nhibernate-mapping-2.2:query, urn:nhibernate-mapping-2.2:sql-query");
++ }
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:meta, urn:nhibernate-mapping-2.2:tuplizer, urn:nhibernate-mapping-2.2:synchronize, urn:nhibernate-mapping-2.2:property, urn:nhibernate-mapping-2.2:primitive-array, urn:nhibernate-mapping-2.2:dynamic-component, urn:nhibernate-mapping-2.2:set, urn:nhibernate-mapping-2.2:one-to-one, urn:nhibernate-mapping-2.2:any, urn:nhibernate-mapping-2.2:array, urn:nhibernate-mapping-2.2:map, urn:nhibernate-mapping-2.2:idbag, urn:nhibernate-mapping-2.2:list, urn:nhibernate-mapping-2.2:bag, urn:nhibernate-mapping-2.2:many-to-one, urn:nhibernate-mapping-2.2:component, urn:nhibernate-mapping-2.2:join, urn:nhibernate-mapping-2.2:subclass, urn:nhibernate-mapping-2.2:loader, urn:nhibernate-mapping-2.2:sql-insert, urn:nhibernate-mapping-2.2:sql-update, urn:nhibernate-mapping-2.2:sql-delete, urn:nhibernate-mapping-2.2:resultset, urn:nhibernate-mapping-2.2:query, urn:nhibernate-mapping-2.2:sql-query");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations70, ref readerCount70);
++ }
++ o.@meta = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta), true);
++ o.@tuplizer = (global::NHibernate.Cfg.MappingSchema.HbmTuplizer[])ShrinkArray(a_1, ca_1, typeof(global::NHibernate.Cfg.MappingSchema.HbmTuplizer), true);
++ o.@synchronize = (global::NHibernate.Cfg.MappingSchema.HbmSynchronize[])ShrinkArray(a_2, ca_2, typeof(global::NHibernate.Cfg.MappingSchema.HbmSynchronize), true);
++ o.@Items = (global::System.Object[])ShrinkArray(a_3, ca_3, typeof(global::System.Object), true);
++ o.@join = (global::NHibernate.Cfg.MappingSchema.HbmJoin[])ShrinkArray(a_4, ca_4, typeof(global::NHibernate.Cfg.MappingSchema.HbmJoin), true);
++ o.@subclass1 = (global::NHibernate.Cfg.MappingSchema.HbmSubclass[])ShrinkArray(a_5, ca_5, typeof(global::NHibernate.Cfg.MappingSchema.HbmSubclass), true);
++ o.@resultset = (global::NHibernate.Cfg.MappingSchema.HbmResultSet[])ShrinkArray(a_10, ca_10, typeof(global::NHibernate.Cfg.MappingSchema.HbmResultSet), true);
++ o.@Items1 = (global::System.Object[])ShrinkArray(a_11, ca_11, typeof(global::System.Object), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmJoin Read78_HbmJoin(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmJoin o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmJoin();
++ global::System.Object[] a_3 = null;
++ int ca_3 = 0;
++ bool[] paramsRead = new bool[14];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[7] && ((object) Reader.LocalName == (object)id50_table && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@table = Reader.Value;
++ paramsRead[7] = true;
++ }
++ else if (!paramsRead[8] && ((object) Reader.LocalName == (object)id5_schema && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@schema = Reader.Value;
++ paramsRead[8] = true;
++ }
++ else if (!paramsRead[9] && ((object) Reader.LocalName == (object)id6_catalog && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@catalog = Reader.Value;
++ paramsRead[9] = true;
++ }
++ else if (!paramsRead[10] && ((object) Reader.LocalName == (object)id61_subselect && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@subselect1 = Reader.Value;
++ paramsRead[10] = true;
++ }
++ else if (!paramsRead[11] && ((object) Reader.LocalName == (object)id100_fetch && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@fetch = Read77_HbmJoinFetch(Reader.Value);
++ paramsRead[11] = true;
++ }
++ else if (!paramsRead[12] && ((object) Reader.LocalName == (object)id94_inverse && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@inverse = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[12] = true;
++ }
++ else if (!paramsRead[13] && ((object) Reader.LocalName == (object)id168_optional && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@optional = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[13] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":table, :schema, :catalog, :subselect, :fetch, :inverse, :optional");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@Items = (global::System.Object[])ShrinkArray(a_3, ca_3, typeof(global::System.Object), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations71 = 0;
++ int readerCount71 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ if (!paramsRead[0] && ((object) Reader.LocalName == (object)id61_subselect && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@subselect = Read5_HbmSubselect(false, true);
++ paramsRead[0] = true;
++ }
++ else if (!paramsRead[1] && ((object) Reader.LocalName == (object)id41_comment && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@comment = Read10_HbmComment(false, true);
++ paramsRead[1] = true;
++ }
++ else if (!paramsRead[2] && ((object) Reader.LocalName == (object)id73_key && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@key = Read31_HbmKey(false, true);
++ paramsRead[2] = true;
++ }
++ else if (((object) Reader.LocalName == (object)id77_component && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_3 = (global::System.Object[])EnsureArrayIndex(a_3, ca_3, typeof(global::System.Object));a_3[ca_3++] = Read68_HbmComponent(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id85_array && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_3 = (global::System.Object[])EnsureArrayIndex(a_3, ca_3, typeof(global::System.Object));a_3[ca_3++] = Read60_HbmArray(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id76_list && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_3 = (global::System.Object[])EnsureArrayIndex(a_3, ca_3, typeof(global::System.Object));a_3[ca_3++] = Read67_HbmList(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id84_any && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_3 = (global::System.Object[])EnsureArrayIndex(a_3, ca_3, typeof(global::System.Object));a_3[ca_3++] = Read36_HbmAny(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id86_bag && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_3 = (global::System.Object[])EnsureArrayIndex(a_3, ca_3, typeof(global::System.Object));a_3[ca_3++] = Read50_HbmBag(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id75_dynamiccomponent && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_3 = (global::System.Object[])EnsureArrayIndex(a_3, ca_3, typeof(global::System.Object));a_3[ca_3++] = Read69_HbmDynamicComponent(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id83_idbag && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_3 = (global::System.Object[])EnsureArrayIndex(a_3, ca_3, typeof(global::System.Object));a_3[ca_3++] = Read66_HbmIdbag(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id82_primitivearray && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_3 = (global::System.Object[])EnsureArrayIndex(a_3, ca_3, typeof(global::System.Object));a_3[ca_3++] = Read64_HbmPrimitiveArray(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id78_manytoone && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_3 = (global::System.Object[])EnsureArrayIndex(a_3, ca_3, typeof(global::System.Object));a_3[ca_3++] = Read29_HbmManyToOne(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id81_set && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_3 = (global::System.Object[])EnsureArrayIndex(a_3, ca_3, typeof(global::System.Object));a_3[ca_3++] = Read49_HbmSet(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id74_map && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_3 = (global::System.Object[])EnsureArrayIndex(a_3, ca_3, typeof(global::System.Object));a_3[ca_3++] = Read58_HbmMap(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id59_property && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_3 = (global::System.Object[])EnsureArrayIndex(a_3, ca_3, typeof(global::System.Object));a_3[ca_3++] = Read34_HbmProperty(false, true);
++ }
++ else if (!paramsRead[4] && ((object) Reader.LocalName == (object)id88_sqlinsert && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@sqlinsert = Read46_HbmCustomSQL(false, true);
++ paramsRead[4] = true;
++ }
++ else if (!paramsRead[5] && ((object) Reader.LocalName == (object)id89_sqlupdate && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@sqlupdate = Read46_HbmCustomSQL(false, true);
++ paramsRead[5] = true;
++ }
++ else if (!paramsRead[6] && ((object) Reader.LocalName == (object)id90_sqldelete && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@sqldelete = Read46_HbmCustomSQL(false, true);
++ paramsRead[6] = true;
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:subselect, urn:nhibernate-mapping-2.2:comment, urn:nhibernate-mapping-2.2:key, urn:nhibernate-mapping-2.2:component, urn:nhibernate-mapping-2.2:array, urn:nhibernate-mapping-2.2:list, urn:nhibernate-mapping-2.2:any, urn:nhibernate-mapping-2.2:bag, urn:nhibernate-mapping-2.2:dynamic-component, urn:nhibernate-mapping-2.2:idbag, urn:nhibernate-mapping-2.2:primitive-array, urn:nhibernate-mapping-2.2:many-to-one, urn:nhibernate-mapping-2.2:set, urn:nhibernate-mapping-2.2:map, urn:nhibernate-mapping-2.2:property, urn:nhibernate-mapping-2.2:sql-insert, urn:nhibernate-mapping-2.2:sql-update, urn:nhibernate-mapping-2.2:sql-delete");
++ }
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:subselect, urn:nhibernate-mapping-2.2:comment, urn:nhibernate-mapping-2.2:key, urn:nhibernate-mapping-2.2:component, urn:nhibernate-mapping-2.2:array, urn:nhibernate-mapping-2.2:list, urn:nhibernate-mapping-2.2:any, urn:nhibernate-mapping-2.2:bag, urn:nhibernate-mapping-2.2:dynamic-component, urn:nhibernate-mapping-2.2:idbag, urn:nhibernate-mapping-2.2:primitive-array, urn:nhibernate-mapping-2.2:many-to-one, urn:nhibernate-mapping-2.2:set, urn:nhibernate-mapping-2.2:map, urn:nhibernate-mapping-2.2:property, urn:nhibernate-mapping-2.2:sql-insert, urn:nhibernate-mapping-2.2:sql-update, urn:nhibernate-mapping-2.2:sql-delete");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations71, ref readerCount71);
++ }
++ o.@Items = (global::System.Object[])ShrinkArray(a_3, ca_3, typeof(global::System.Object), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmJoinFetch Read77_HbmJoinFetch(string s) {
++ switch (s) {
++ case @"join": return global::NHibernate.Cfg.MappingSchema.HbmJoinFetch.@Join;
++ case @"select": return global::NHibernate.Cfg.MappingSchema.HbmJoinFetch.@Select;
++ default: throw CreateUnknownConstantException(s, typeof(global::NHibernate.Cfg.MappingSchema.HbmJoinFetch));
++ }
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmVersion Read75_HbmVersion(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmVersion o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmVersion();
++ global::NHibernate.Cfg.MappingSchema.HbmMeta[] a_0 = null;
++ int ca_0 = 0;
++ global::NHibernate.Cfg.MappingSchema.HbmColumn[] a_1 = null;
++ int ca_1 = 0;
++ bool[] paramsRead = new bool[10];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[2] && ((object) Reader.LocalName == (object)id28_name && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@name = Reader.Value;
++ paramsRead[2] = true;
++ }
++ else if (!paramsRead[3] && ((object) Reader.LocalName == (object)id71_node && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@node = Reader.Value;
++ paramsRead[3] = true;
++ }
++ else if (!paramsRead[4] && ((object) Reader.LocalName == (object)id93_access && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@access = Reader.Value;
++ paramsRead[4] = true;
++ }
++ else if (!paramsRead[5] && ((object) Reader.LocalName == (object)id55_column && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@column1 = Reader.Value;
++ paramsRead[5] = true;
++ }
++ else if (!paramsRead[6] && ((object) Reader.LocalName == (object)id33_type && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@type = Reader.Value;
++ paramsRead[6] = true;
++ }
++ else if (!paramsRead[7] && ((object) Reader.LocalName == (object)id169_unsavedvalue && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@unsavedvalue = Reader.Value;
++ paramsRead[7] = true;
++ }
++ else if (!paramsRead[8] && ((object) Reader.LocalName == (object)id136_generated && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@generated = Read73_HbmVersionGeneration(Reader.Value);
++ paramsRead[8] = true;
++ }
++ else if (!paramsRead[9] && ((object) Reader.LocalName == (object)id131_insert && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@insert = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ o.@insertSpecified = true;
++ paramsRead[9] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":name, :node, :access, :column, :type, :unsaved-value, :generated, :insert");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@meta = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta), true);
++ o.@column = (global::NHibernate.Cfg.MappingSchema.HbmColumn[])ShrinkArray(a_1, ca_1, typeof(global::NHibernate.Cfg.MappingSchema.HbmColumn), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations72 = 0;
++ int readerCount72 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ if (((object) Reader.LocalName == (object)id13_meta && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])EnsureArrayIndex(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta));a_0[ca_0++] = Read4_HbmMeta(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id55_column && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_1 = (global::NHibernate.Cfg.MappingSchema.HbmColumn[])EnsureArrayIndex(a_1, ca_1, typeof(global::NHibernate.Cfg.MappingSchema.HbmColumn));a_1[ca_1++] = Read13_HbmColumn(false, true);
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:meta, urn:nhibernate-mapping-2.2:column");
++ }
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:meta, urn:nhibernate-mapping-2.2:column");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations72, ref readerCount72);
++ }
++ o.@meta = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta), true);
++ o.@column = (global::NHibernate.Cfg.MappingSchema.HbmColumn[])ShrinkArray(a_1, ca_1, typeof(global::NHibernate.Cfg.MappingSchema.HbmColumn), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmVersionGeneration Read73_HbmVersionGeneration(string s) {
++ switch (s) {
++ case @"never": return global::NHibernate.Cfg.MappingSchema.HbmVersionGeneration.@Never;
++ case @"always": return global::NHibernate.Cfg.MappingSchema.HbmVersionGeneration.@Always;
++ default: throw CreateUnknownConstantException(s, typeof(global::NHibernate.Cfg.MappingSchema.HbmVersionGeneration));
++ }
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmTimestamp Read74_HbmTimestamp(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmTimestamp o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmTimestamp();
++ global::NHibernate.Cfg.MappingSchema.HbmMeta[] a_0 = null;
++ int ca_0 = 0;
++ bool[] paramsRead = new bool[8];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[1] && ((object) Reader.LocalName == (object)id28_name && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@name = Reader.Value;
++ paramsRead[1] = true;
++ }
++ else if (!paramsRead[2] && ((object) Reader.LocalName == (object)id71_node && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@node = Reader.Value;
++ paramsRead[2] = true;
++ }
++ else if (!paramsRead[3] && ((object) Reader.LocalName == (object)id55_column && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@column = Reader.Value;
++ paramsRead[3] = true;
++ }
++ else if (!paramsRead[4] && ((object) Reader.LocalName == (object)id93_access && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@access = Reader.Value;
++ paramsRead[4] = true;
++ }
++ else if (!paramsRead[5] && ((object) Reader.LocalName == (object)id169_unsavedvalue && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@unsavedvalue = Read71_HbmTimestampUnsavedvalue(Reader.Value);
++ o.@unsavedvalueSpecified = true;
++ paramsRead[5] = true;
++ }
++ else if (!paramsRead[6] && ((object) Reader.LocalName == (object)id170_source && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@source = Read72_HbmTimestampSource(Reader.Value);
++ paramsRead[6] = true;
++ }
++ else if (!paramsRead[7] && ((object) Reader.LocalName == (object)id136_generated && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@generated = Read73_HbmVersionGeneration(Reader.Value);
++ paramsRead[7] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":name, :node, :column, :access, :unsaved-value, :source, :generated");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@meta = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations73 = 0;
++ int readerCount73 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ if (((object) Reader.LocalName == (object)id13_meta && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])EnsureArrayIndex(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta));a_0[ca_0++] = Read4_HbmMeta(false, true);
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:meta");
++ }
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:meta");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations73, ref readerCount73);
++ }
++ o.@meta = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmTimestampSource Read72_HbmTimestampSource(string s) {
++ switch (s) {
++ case @"vm": return global::NHibernate.Cfg.MappingSchema.HbmTimestampSource.@Vm;
++ case @"db": return global::NHibernate.Cfg.MappingSchema.HbmTimestampSource.@Db;
++ default: throw CreateUnknownConstantException(s, typeof(global::NHibernate.Cfg.MappingSchema.HbmTimestampSource));
++ }
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmTimestampUnsavedvalue Read71_HbmTimestampUnsavedvalue(string s) {
++ switch (s) {
++ case @"null": return global::NHibernate.Cfg.MappingSchema.HbmTimestampUnsavedvalue.@Null;
++ case @"undefined": return global::NHibernate.Cfg.MappingSchema.HbmTimestampUnsavedvalue.@Undefined;
++ default: throw CreateUnknownConstantException(s, typeof(global::NHibernate.Cfg.MappingSchema.HbmTimestampUnsavedvalue));
++ }
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmNaturalId Read70_HbmNaturalId(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmNaturalId o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmNaturalId();
++ global::System.Object[] a_0 = null;
++ int ca_0 = 0;
++ bool[] paramsRead = new bool[2];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[1] && ((object) Reader.LocalName == (object)id95_mutable && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@mutable = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[1] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":mutable");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@Items = (global::System.Object[])ShrinkArray(a_0, ca_0, typeof(global::System.Object), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations74 = 0;
++ int readerCount74 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ if (((object) Reader.LocalName == (object)id75_dynamiccomponent && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::System.Object[])EnsureArrayIndex(a_0, ca_0, typeof(global::System.Object));a_0[ca_0++] = Read69_HbmDynamicComponent(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id84_any && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::System.Object[])EnsureArrayIndex(a_0, ca_0, typeof(global::System.Object));a_0[ca_0++] = Read36_HbmAny(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id59_property && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::System.Object[])EnsureArrayIndex(a_0, ca_0, typeof(global::System.Object));a_0[ca_0++] = Read34_HbmProperty(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id77_component && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::System.Object[])EnsureArrayIndex(a_0, ca_0, typeof(global::System.Object));a_0[ca_0++] = Read68_HbmComponent(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id78_manytoone && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::System.Object[])EnsureArrayIndex(a_0, ca_0, typeof(global::System.Object));a_0[ca_0++] = Read29_HbmManyToOne(false, true);
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:dynamic-component, urn:nhibernate-mapping-2.2:any, urn:nhibernate-mapping-2.2:property, urn:nhibernate-mapping-2.2:component, urn:nhibernate-mapping-2.2:many-to-one");
++ }
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:dynamic-component, urn:nhibernate-mapping-2.2:any, urn:nhibernate-mapping-2.2:property, urn:nhibernate-mapping-2.2:component, urn:nhibernate-mapping-2.2:many-to-one");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations74, ref readerCount74);
++ }
++ o.@Items = (global::System.Object[])ShrinkArray(a_0, ca_0, typeof(global::System.Object), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmDiscriminator Read25_HbmDiscriminator(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmDiscriminator o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmDiscriminator();
++ bool[] paramsRead = new bool[8];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[1] && ((object) Reader.LocalName == (object)id55_column && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@column = Reader.Value;
++ paramsRead[1] = true;
++ }
++ else if (!paramsRead[2] && ((object) Reader.LocalName == (object)id114_formula && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@formula = Reader.Value;
++ paramsRead[2] = true;
++ }
++ else if (!paramsRead[3] && ((object) Reader.LocalName == (object)id33_type && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@type = Reader.Value;
++ paramsRead[3] = true;
++ }
++ else if (!paramsRead[4] && ((object) Reader.LocalName == (object)id121_notnull && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@notnull = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[4] = true;
++ }
++ else if (!paramsRead[5] && ((object) Reader.LocalName == (object)id118_length && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@length = CollapseWhitespace(Reader.Value);
++ paramsRead[5] = true;
++ }
++ else if (!paramsRead[6] && ((object) Reader.LocalName == (object)id171_force && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@force = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[6] = true;
++ }
++ else if (!paramsRead[7] && ((object) Reader.LocalName == (object)id131_insert && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@insert = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[7] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":column, :formula, :type, :not-null, :length, :force, :insert");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations75 = 0;
++ int readerCount75 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ if (!paramsRead[0] && ((object) Reader.LocalName == (object)id114_formula && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@Item = Read24_HbmFormula(false, true);
++ paramsRead[0] = true;
++ }
++ else if (!paramsRead[0] && ((object) Reader.LocalName == (object)id55_column && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@Item = Read13_HbmColumn(false, true);
++ paramsRead[0] = true;
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:formula, urn:nhibernate-mapping-2.2:column");
++ }
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:formula, urn:nhibernate-mapping-2.2:column");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations75, ref readerCount75);
++ }
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmCompositeId Read23_HbmCompositeId(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmCompositeId o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmCompositeId();
++ global::NHibernate.Cfg.MappingSchema.HbmMeta[] a_0 = null;
++ int ca_0 = 0;
++ global::System.Object[] a_1 = null;
++ int ca_1 = 0;
++ bool[] paramsRead = new bool[8];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[2] && ((object) Reader.LocalName == (object)id1_class && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@class = Reader.Value;
++ paramsRead[2] = true;
++ }
++ else if (!paramsRead[3] && ((object) Reader.LocalName == (object)id172_mapped && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@mapped = System.Xml.XmlConvert.ToBoolean(Reader.Value);
++ paramsRead[3] = true;
++ }
++ else if (!paramsRead[4] && ((object) Reader.LocalName == (object)id28_name && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@name = Reader.Value;
++ paramsRead[4] = true;
++ }
++ else if (!paramsRead[5] && ((object) Reader.LocalName == (object)id71_node && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@node = Reader.Value;
++ paramsRead[5] = true;
++ }
++ else if (!paramsRead[6] && ((object) Reader.LocalName == (object)id93_access && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@access = Reader.Value;
++ paramsRead[6] = true;
++ }
++ else if (!paramsRead[7] && ((object) Reader.LocalName == (object)id169_unsavedvalue && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@unsavedvalue = Read22_HbmUnsavedValueType(Reader.Value);
++ paramsRead[7] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":class, :mapped, :name, :node, :access, :unsaved-value");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@meta = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta), true);
++ o.@Items = (global::System.Object[])ShrinkArray(a_1, ca_1, typeof(global::System.Object), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations76 = 0;
++ int readerCount76 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ if (((object) Reader.LocalName == (object)id13_meta && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])EnsureArrayIndex(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta));a_0[ca_0++] = Read4_HbmMeta(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id154_keymanytoone && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_1 = (global::System.Object[])EnsureArrayIndex(a_1, ca_1, typeof(global::System.Object));a_1[ca_1++] = Read20_HbmKeyManyToOne(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id155_keyproperty && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_1 = (global::System.Object[])EnsureArrayIndex(a_1, ca_1, typeof(global::System.Object));a_1[ca_1++] = Read21_HbmKeyProperty(false, true);
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:meta, urn:nhibernate-mapping-2.2:key-many-to-one, urn:nhibernate-mapping-2.2:key-property");
++ }
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:meta, urn:nhibernate-mapping-2.2:key-many-to-one, urn:nhibernate-mapping-2.2:key-property");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations76, ref readerCount76);
++ }
++ o.@meta = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta), true);
++ o.@Items = (global::System.Object[])ShrinkArray(a_1, ca_1, typeof(global::System.Object), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmUnsavedValueType Read22_HbmUnsavedValueType(string s) {
++ switch (s) {
++ case @"undefined": return global::NHibernate.Cfg.MappingSchema.HbmUnsavedValueType.@Undefined;
++ case @"any": return global::NHibernate.Cfg.MappingSchema.HbmUnsavedValueType.@Any;
++ case @"none": return global::NHibernate.Cfg.MappingSchema.HbmUnsavedValueType.@None;
++ default: throw CreateUnknownConstantException(s, typeof(global::NHibernate.Cfg.MappingSchema.HbmUnsavedValueType));
++ }
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmId Read17_HbmId(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmId o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmId();
++ global::NHibernate.Cfg.MappingSchema.HbmMeta[] a_0 = null;
++ int ca_0 = 0;
++ global::NHibernate.Cfg.MappingSchema.HbmColumn[] a_1 = null;
++ int ca_1 = 0;
++ bool[] paramsRead = new bool[11];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[4] && ((object) Reader.LocalName == (object)id28_name && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@name = Reader.Value;
++ paramsRead[4] = true;
++ }
++ else if (!paramsRead[5] && ((object) Reader.LocalName == (object)id71_node && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@node = Reader.Value;
++ paramsRead[5] = true;
++ }
++ else if (!paramsRead[6] && ((object) Reader.LocalName == (object)id93_access && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@access = Reader.Value;
++ paramsRead[6] = true;
++ }
++ else if (!paramsRead[7] && ((object) Reader.LocalName == (object)id55_column && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@column1 = Reader.Value;
++ paramsRead[7] = true;
++ }
++ else if (!paramsRead[8] && ((object) Reader.LocalName == (object)id33_type && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@type1 = Reader.Value;
++ paramsRead[8] = true;
++ }
++ else if (!paramsRead[9] && ((object) Reader.LocalName == (object)id118_length && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@length = CollapseWhitespace(Reader.Value);
++ paramsRead[9] = true;
++ }
++ else if (!paramsRead[10] && ((object) Reader.LocalName == (object)id169_unsavedvalue && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@unsavedvalue = Reader.Value;
++ paramsRead[10] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":name, :node, :access, :column, :type, :length, :unsaved-value");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@meta = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta), true);
++ o.@column = (global::NHibernate.Cfg.MappingSchema.HbmColumn[])ShrinkArray(a_1, ca_1, typeof(global::NHibernate.Cfg.MappingSchema.HbmColumn), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations77 = 0;
++ int readerCount77 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ if (((object) Reader.LocalName == (object)id13_meta && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])EnsureArrayIndex(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta));a_0[ca_0++] = Read4_HbmMeta(false, true);
++ }
++ else if (((object) Reader.LocalName == (object)id55_column && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_1 = (global::NHibernate.Cfg.MappingSchema.HbmColumn[])EnsureArrayIndex(a_1, ca_1, typeof(global::NHibernate.Cfg.MappingSchema.HbmColumn));a_1[ca_1++] = Read13_HbmColumn(false, true);
++ }
++ else if (!paramsRead[2] && ((object) Reader.LocalName == (object)id33_type && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@type = Read15_HbmType(false, true);
++ paramsRead[2] = true;
++ }
++ else if (!paramsRead[3] && ((object) Reader.LocalName == (object)id145_generator && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ o.@generator = Read16_HbmGenerator(false, true);
++ paramsRead[3] = true;
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:meta, urn:nhibernate-mapping-2.2:column, urn:nhibernate-mapping-2.2:type, urn:nhibernate-mapping-2.2:generator");
++ }
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:meta, urn:nhibernate-mapping-2.2:column, urn:nhibernate-mapping-2.2:type, urn:nhibernate-mapping-2.2:generator");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations77, ref readerCount77);
++ }
++ o.@meta = (global::NHibernate.Cfg.MappingSchema.HbmMeta[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmMeta), true);
++ o.@column = (global::NHibernate.Cfg.MappingSchema.HbmColumn[])ShrinkArray(a_1, ca_1, typeof(global::NHibernate.Cfg.MappingSchema.HbmColumn), true);
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmOptimisticLockMode Read97_HbmOptimisticLockMode(string s) {
++ switch (s) {
++ case @"none": return global::NHibernate.Cfg.MappingSchema.HbmOptimisticLockMode.@None;
++ case @"version": return global::NHibernate.Cfg.MappingSchema.HbmOptimisticLockMode.@Version;
++ case @"dirty": return global::NHibernate.Cfg.MappingSchema.HbmOptimisticLockMode.@Dirty;
++ case @"all": return global::NHibernate.Cfg.MappingSchema.HbmOptimisticLockMode.@All;
++ default: throw CreateUnknownConstantException(s, typeof(global::NHibernate.Cfg.MappingSchema.HbmOptimisticLockMode));
++ }
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmPolymorphismType Read96_HbmPolymorphismType(string s) {
++ switch (s) {
++ case @"implicit": return global::NHibernate.Cfg.MappingSchema.HbmPolymorphismType.@Implicit;
++ case @"explicit": return global::NHibernate.Cfg.MappingSchema.HbmPolymorphismType.@Explicit;
++ default: throw CreateUnknownConstantException(s, typeof(global::NHibernate.Cfg.MappingSchema.HbmPolymorphismType));
++ }
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmImport Read100_HbmImport(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmImport o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmImport();
++ bool[] paramsRead = new bool[2];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[0] && ((object) Reader.LocalName == (object)id1_class && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@class = Reader.Value;
++ paramsRead[0] = true;
++ }
++ else if (!paramsRead[1] && ((object) Reader.LocalName == (object)id173_rename && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@rename = Reader.Value;
++ paramsRead[1] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":class, :rename");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations78 = 0;
++ int readerCount78 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ UnknownNode((object)o, @"");
++ }
++ else {
++ UnknownNode((object)o, @"");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations78, ref readerCount78);
++ }
++ ReadEndElement();
++ return o;
++ }
++
++ global::NHibernate.Cfg.MappingSchema.HbmTypedef Read99_HbmTypedef(bool isNullable, bool checkType) {
++ System.Xml.XmlQualifiedName xsiType = checkType ? GetXsiType() : null;
++ bool isNull = false;
++ if (isNullable) isNull = ReadNull();
++ if (checkType) {
++ if (xsiType == null || ((object) ((System.Xml.XmlQualifiedName)xsiType).Name == (object)id4_Item && (object) ((System.Xml.XmlQualifiedName)xsiType).Namespace == (object)id2_urnnhibernatemapping22)) {
++ }
++ else
++ throw CreateUnknownTypeException((System.Xml.XmlQualifiedName)xsiType);
++ }
++ if (isNull) return null;
++ global::NHibernate.Cfg.MappingSchema.HbmTypedef o;
++ o = new global::NHibernate.Cfg.MappingSchema.HbmTypedef();
++ global::NHibernate.Cfg.MappingSchema.HbmParam[] a_0 = null;
++ int ca_0 = 0;
++ bool[] paramsRead = new bool[3];
++ while (Reader.MoveToNextAttribute()) {
++ if (!paramsRead[1] && ((object) Reader.LocalName == (object)id1_class && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@class = Reader.Value;
++ paramsRead[1] = true;
++ }
++ else if (!paramsRead[2] && ((object) Reader.LocalName == (object)id28_name && (object) Reader.NamespaceURI == (object)id4_Item)) {
++ o.@name = Reader.Value;
++ paramsRead[2] = true;
++ }
++ else if (!IsXmlnsAttribute(Reader.Name)) {
++ UnknownNode((object)o, @":class, :name");
++ }
++ }
++ Reader.MoveToElement();
++ if (Reader.IsEmptyElement) {
++ Reader.Skip();
++ o.@param = (global::NHibernate.Cfg.MappingSchema.HbmParam[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmParam), true);
++ return o;
++ }
++ Reader.ReadStartElement();
++ Reader.MoveToContent();
++ int whileIterations79 = 0;
++ int readerCount79 = ReaderCount;
++ while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && Reader.NodeType != System.Xml.XmlNodeType.None) {
++ if (Reader.NodeType == System.Xml.XmlNodeType.Element) {
++ if (((object) Reader.LocalName == (object)id29_param && (object) Reader.NamespaceURI == (object)id2_urnnhibernatemapping22)) {
++ a_0 = (global::NHibernate.Cfg.MappingSchema.HbmParam[])EnsureArrayIndex(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmParam));a_0[ca_0++] = Read14_HbmParam(false, true);
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:param");
++ }
++ }
++ else {
++ UnknownNode((object)o, @"urn:nhibernate-mapping-2.2:param");
++ }
++ Reader.MoveToContent();
++ CheckReaderCount(ref whileIterations79, ref readerCount79);
++ }
++ o.@param = (global::NHibernate.Cfg.MappingSchema.HbmParam[])ShrinkArray(a_0, ca_0, typeof(global::NHibernate.Cfg.MappingSchema.HbmParam), true);
++ ReadEndElement();
++ return o;
++ }
++
++ protected override void InitCallbacks() {
++ }
++
++ string id49_synchronize;
++ string id166_version;
++ string id69_check;
++ string id88_sqlinsert;
++ string id76_list;
++ string id20_sqlquery;
++ string id73_key;
++ string id120_scale;
++ string id121_notnull;
++ string id117_propertyref;
++ string id15_import;
++ string id50_table;
++ string id129_nestedcompositeelement;
++ string id157_schemaaction;
++ string id16_unionsubclass;
++ string id86_bag;
++ string id37_fetchsize;
++ string id142_listindex;
++ string id1_class;
++ string id92_queryref;
++ string id79_properties;
++ string id67_abstract;
++ string id57_entityname;
++ string id89_sqlupdate;
++ string id172_mapped;
++ string id106_manytoany;
++ string id35_cacheable;
++ string id147_constrained;
++ string id124_index;
++ string id14_typedef;
++ string id143_base;
++ string id149_mapkeymanytomany;
++ string id156_entitymode;
++ string id40_readonly;
++ string id10_autoimport;
++ string id70_batchsize;
++ string id66_lazy;
++ string id41_comment;
++ string id137_ondelete;
++ string id12_assembly;
++ string id45_returnjoin;
++ string id52_role;
++ string id154_keymanytoone;
++ string id91_HbmCustomSQL;
++ string id98_where;
++ string id108_compositeelement;
++ string id112_filter;
++ string id64_selectbeforeupdate;
++ string id135_value;
++ string id43_resultsetref;
++ string id133_metatype;
++ string id56_returncolumn;
++ string id170_source;
++ string id115_foreignkey;
++ string id145_generator;
++ string id114_formula;
++ string id47_returnscalar;
++ string id61_subselect;
++ string id59_property;
++ string id155_keyproperty;
++ string id122_uniquekey;
++ string id119_precision;
++ string id136_generated;
++ string id4_Item;
++ string id77_component;
++ string id9_defaultlazy;
++ string id130_update;
++ string id36_cacheregion;
++ string id151_compositemapkey;
++ string id160_rowid;
++ string id80_onetoone;
++ string id144_collectionid;
++ string id161_id;
++ string id131_insert;
++ string id110_onetomany;
++ string id34_flushmode;
++ string id44_callable;
++ string id29_param;
++ string id171_force;
++ string id13_meta;
++ string id65_extends;
++ string id95_mutable;
++ string id68_persister;
++ string id81_set;
++ string id2_urnnhibernatemapping22;
++ string id118_length;
++ string id85_array;
++ string id164_naturalid;
++ string id96_cascade;
++ string id165_timestamp;
++ string id169_unsavedvalue;
++ string id51_alias;
++ string id173_rename;
++ string id74_map;
++ string id7_defaultcascade;
++ string id139_region;
++ string id21_query;
++ string id116_unique;
++ string id78_manytoone;
++ string id126_attribute;
++ string id93_access;
++ string id148_indexmanytomany;
++ string id31_usemanytoone;
++ string id138_usage;
++ string id146_sort;
++ string id168_optional;
++ string id46_return;
++ string id24_create;
++ string id100_fetch;
++ string id19_resultset;
++ string id25_definition;
++ string id104_generic;
++ string id152_indexmanytoany;
++ string id32_filterparam;
++ string id63_dynamicinsert;
++ string id103_embedxml;
++ string id140_include;
++ string id82_primitivearray;
++ string id22_filterdef;
++ string id75_dynamiccomponent;
++ string id38_timeout;
++ string id94_inverse;
++ string id134_metavalue;
++ string id72_tuplizer;
++ string id84_any;
++ string id90_sqldelete;
++ string id42_queryparam;
++ string id99_outerjoin;
++ string id163_discriminator;
++ string id71_node;
++ string id125_default;
++ string id54_returnproperty;
++ string id27_dialectscope;
++ string id6_catalog;
++ string id3_hibernatemapping;
++ string id158_discriminatorvalue;
++ string id162_compositeid;
++ string id26_drop;
++ string id97_orderby;
++ string id28_name;
++ string id132_idtype;
++ string id62_dynamicupdate;
++ string id113_notfound;
++ string id17_subclass;
++ string id87_loader;
++ string id18_joinedsubclass;
++ string id101_collectiontype;
++ string id150_compositeindex;
++ string id33_type;
++ string id111_sqldeleteall;
++ string id109_manytomany;
++ string id55_column;
++ string id159_polymorphism;
++ string id53_lockmode;
++ string id48_loadcollection;
++ string id127_inherit;
++ string id153_mapkey;
++ string id128_parent;
++ string id8_defaultaccess;
++ string id5_schema;
++ string id105_cache;
++ string id58_returndiscriminator;
++ string id167_join;
++ string id39_cachemode;
++ string id30_condition;
++ string id60_proxy;
++ string id107_element;
++ string id11_namespace;
++ string id102_optimisticlock;
++ string id123_sqltype;
++ string id23_databaseobject;
++ string id83_idbag;
++ string id141_elementclass;
++
++ protected override void InitIDs() {
++ id49_synchronize = Reader.NameTable.Add(@"synchronize");
++ id166_version = Reader.NameTable.Add(@"version");
++ id69_check = Reader.NameTable.Add(@"check");
++ id88_sqlinsert = Reader.NameTable.Add(@"sql-insert");
++ id76_list = Reader.NameTable.Add(@"list");
++ id20_sqlquery = Reader.NameTable.Add(@"sql-query");
++ id73_key = Reader.NameTable.Add(@"key");
++ id120_scale = Reader.NameTable.Add(@"scale");
++ id121_notnull = Reader.NameTable.Add(@"not-null");
++ id117_propertyref = Reader.NameTable.Add(@"property-ref");
++ id15_import = Reader.NameTable.Add(@"import");
++ id50_table = Reader.NameTable.Add(@"table");
++ id129_nestedcompositeelement = Reader.NameTable.Add(@"nested-composite-element");
++ id157_schemaaction = Reader.NameTable.Add(@"schema-action");
++ id16_unionsubclass = Reader.NameTable.Add(@"union-subclass");
++ id86_bag = Reader.NameTable.Add(@"bag");
++ id37_fetchsize = Reader.NameTable.Add(@"fetch-size");
++ id142_listindex = Reader.NameTable.Add(@"list-index");
++ id1_class = Reader.NameTable.Add(@"class");
++ id92_queryref = Reader.NameTable.Add(@"query-ref");
++ id79_properties = Reader.NameTable.Add(@"properties");
++ id67_abstract = Reader.NameTable.Add(@"abstract");
++ id57_entityname = Reader.NameTable.Add(@"entity-name");
++ id89_sqlupdate = Reader.NameTable.Add(@"sql-update");
++ id172_mapped = Reader.NameTable.Add(@"mapped");
++ id106_manytoany = Reader.NameTable.Add(@"many-to-any");
++ id35_cacheable = Reader.NameTable.Add(@"cacheable");
++ id147_constrained = Reader.NameTable.Add(@"constrained");
++ id124_index = Reader.NameTable.Add(@"index");
++ id14_typedef = Reader.NameTable.Add(@"typedef");
++ id143_base = Reader.NameTable.Add(@"base");
++ id149_mapkeymanytomany = Reader.NameTable.Add(@"map-key-many-to-many");
++ id156_entitymode = Reader.NameTable.Add(@"entity-mode");
++ id40_readonly = Reader.NameTable.Add(@"read-only");
++ id10_autoimport = Reader.NameTable.Add(@"auto-import");
++ id70_batchsize = Reader.NameTable.Add(@"batch-size");
++ id66_lazy = Reader.NameTable.Add(@"lazy");
++ id41_comment = Reader.NameTable.Add(@"comment");
++ id137_ondelete = Reader.NameTable.Add(@"on-delete");
++ id12_assembly = Reader.NameTable.Add(@"assembly");
++ id45_returnjoin = Reader.NameTable.Add(@"return-join");
++ id52_role = Reader.NameTable.Add(@"role");
++ id154_keymanytoone = Reader.NameTable.Add(@"key-many-to-one");
++ id91_HbmCustomSQL = Reader.NameTable.Add(@"HbmCustomSQL");
++ id98_where = Reader.NameTable.Add(@"where");
++ id108_compositeelement = Reader.NameTable.Add(@"composite-element");
++ id112_filter = Reader.NameTable.Add(@"filter");
++ id64_selectbeforeupdate = Reader.NameTable.Add(@"select-before-update");
++ id135_value = Reader.NameTable.Add(@"value");
++ id43_resultsetref = Reader.NameTable.Add(@"resultset-ref");
++ id133_metatype = Reader.NameTable.Add(@"meta-type");
++ id56_returncolumn = Reader.NameTable.Add(@"return-column");
++ id170_source = Reader.NameTable.Add(@"source");
++ id115_foreignkey = Reader.NameTable.Add(@"foreign-key");
++ id145_generator = Reader.NameTable.Add(@"generator");
++ id114_formula = Reader.NameTable.Add(@"formula");
++ id47_returnscalar = Reader.NameTable.Add(@"return-scalar");
++ id61_subselect = Reader.NameTable.Add(@"subselect");
++ id59_property = Reader.NameTable.Add(@"property");
++ id155_keyproperty = Reader.NameTable.Add(@"key-property");
++ id122_uniquekey = Reader.NameTable.Add(@"unique-key");
++ id119_precision = Reader.NameTable.Add(@"precision");
++ id136_generated = Reader.NameTable.Add(@"generated");
++ id4_Item = Reader.NameTable.Add(@"");
++ id77_component = Reader.NameTable.Add(@"component");
++ id9_defaultlazy = Reader.NameTable.Add(@"default-lazy");
++ id130_update = Reader.NameTable.Add(@"update");
++ id36_cacheregion = Reader.NameTable.Add(@"cache-region");
++ id151_compositemapkey = Reader.NameTable.Add(@"composite-map-key");
++ id160_rowid = Reader.NameTable.Add(@"rowid");
++ id80_onetoone = Reader.NameTable.Add(@"one-to-one");
++ id144_collectionid = Reader.NameTable.Add(@"collection-id");
++ id161_id = Reader.NameTable.Add(@"id");
++ id131_insert = Reader.NameTable.Add(@"insert");
++ id110_onetomany = Reader.NameTable.Add(@"one-to-many");
++ id34_flushmode = Reader.NameTable.Add(@"flush-mode");
++ id44_callable = Reader.NameTable.Add(@"callable");
++ id29_param = Reader.NameTable.Add(@"param");
++ id171_force = Reader.NameTable.Add(@"force");
++ id13_meta = Reader.NameTable.Add(@"meta");
++ id65_extends = Reader.NameTable.Add(@"extends");
++ id95_mutable = Reader.NameTable.Add(@"mutable");
++ id68_persister = Reader.NameTable.Add(@"persister");
++ id81_set = Reader.NameTable.Add(@"set");
++ id2_urnnhibernatemapping22 = Reader.NameTable.Add(@"urn:nhibernate-mapping-2.2");
++ id118_length = Reader.NameTable.Add(@"length");
++ id85_array = Reader.NameTable.Add(@"array");
++ id164_naturalid = Reader.NameTable.Add(@"natural-id");
++ id96_cascade = Reader.NameTable.Add(@"cascade");
++ id165_timestamp = Reader.NameTable.Add(@"timestamp");
++ id169_unsavedvalue = Reader.NameTable.Add(@"unsaved-value");
++ id51_alias = Reader.NameTable.Add(@"alias");
++ id173_rename = Reader.NameTable.Add(@"rename");
++ id74_map = Reader.NameTable.Add(@"map");
++ id7_defaultcascade = Reader.NameTable.Add(@"default-cascade");
++ id139_region = Reader.NameTable.Add(@"region");
++ id21_query = Reader.NameTable.Add(@"query");
++ id116_unique = Reader.NameTable.Add(@"unique");
++ id78_manytoone = Reader.NameTable.Add(@"many-to-one");
++ id126_attribute = Reader.NameTable.Add(@"attribute");
++ id93_access = Reader.NameTable.Add(@"access");
++ id148_indexmanytomany = Reader.NameTable.Add(@"index-many-to-many");
++ id31_usemanytoone = Reader.NameTable.Add(@"use-many-to-one");
++ id138_usage = Reader.NameTable.Add(@"usage");
++ id146_sort = Reader.NameTable.Add(@"sort");
++ id168_optional = Reader.NameTable.Add(@"optional");
++ id46_return = Reader.NameTable.Add(@"return");
++ id24_create = Reader.NameTable.Add(@"create");
++ id100_fetch = Reader.NameTable.Add(@"fetch");
++ id19_resultset = Reader.NameTable.Add(@"resultset");
++ id25_definition = Reader.NameTable.Add(@"definition");
++ id104_generic = Reader.NameTable.Add(@"generic");
++ id152_indexmanytoany = Reader.NameTable.Add(@"index-many-to-any");
++ id32_filterparam = Reader.NameTable.Add(@"filter-param");
++ id63_dynamicinsert = Reader.NameTable.Add(@"dynamic-insert");
++ id103_embedxml = Reader.NameTable.Add(@"embed-xml");
++ id140_include = Reader.NameTable.Add(@"include");
++ id82_primitivearray = Reader.NameTable.Add(@"primitive-array");
++ id22_filterdef = Reader.NameTable.Add(@"filter-def");
++ id75_dynamiccomponent = Reader.NameTable.Add(@"dynamic-component");
++ id38_timeout = Reader.NameTable.Add(@"timeout");
++ id94_inverse = Reader.NameTable.Add(@"inverse");
++ id134_metavalue = Reader.NameTable.Add(@"meta-value");
++ id72_tuplizer = Reader.NameTable.Add(@"tuplizer");
++ id84_any = Reader.NameTable.Add(@"any");
++ id90_sqldelete = Reader.NameTable.Add(@"sql-delete");
++ id42_queryparam = Reader.NameTable.Add(@"query-param");
++ id99_outerjoin = Reader.NameTable.Add(@"outer-join");
++ id163_discriminator = Reader.NameTable.Add(@"discriminator");
++ id71_node = Reader.NameTable.Add(@"node");
++ id125_default = Reader.NameTable.Add(@"default");
++ id54_returnproperty = Reader.NameTable.Add(@"return-property");
++ id27_dialectscope = Reader.NameTable.Add(@"dialect-scope");
++ id6_catalog = Reader.NameTable.Add(@"catalog");
++ id3_hibernatemapping = Reader.NameTable.Add(@"hibernate-mapping");
++ id158_discriminatorvalue = Reader.NameTable.Add(@"discriminator-value");
++ id162_compositeid = Reader.NameTable.Add(@"composite-id");
++ id26_drop = Reader.NameTable.Add(@"drop");
++ id97_orderby = Reader.NameTable.Add(@"order-by");
++ id28_name = Reader.NameTable.Add(@"name");
++ id132_idtype = Reader.NameTable.Add(@"id-type");
++ id62_dynamicupdate = Reader.NameTable.Add(@"dynamic-update");
++ id113_notfound = Reader.NameTable.Add(@"not-found");
++ id17_subclass = Reader.NameTable.Add(@"subclass");
++ id87_loader = Reader.NameTable.Add(@"loader");
++ id18_joinedsubclass = Reader.NameTable.Add(@"joined-subclass");
++ id101_collectiontype = Reader.NameTable.Add(@"collection-type");
++ id150_compositeindex = Reader.NameTable.Add(@"composite-index");
++ id33_type = Reader.NameTable.Add(@"type");
++ id111_sqldeleteall = Reader.NameTable.Add(@"sql-delete-all");
++ id109_manytomany = Reader.NameTable.Add(@"many-to-many");
++ id55_column = Reader.NameTable.Add(@"column");
++ id159_polymorphism = Reader.NameTable.Add(@"polymorphism");
++ id53_lockmode = Reader.NameTable.Add(@"lock-mode");
++ id48_loadcollection = Reader.NameTable.Add(@"load-collection");
++ id127_inherit = Reader.NameTable.Add(@"inherit");
++ id153_mapkey = Reader.NameTable.Add(@"map-key");
++ id128_parent = Reader.NameTable.Add(@"parent");
++ id8_defaultaccess = Reader.NameTable.Add(@"default-access");
++ id5_schema = Reader.NameTable.Add(@"schema");
++ id105_cache = Reader.NameTable.Add(@"cache");
++ id58_returndiscriminator = Reader.NameTable.Add(@"return-discriminator");
++ id167_join = Reader.NameTable.Add(@"join");
++ id39_cachemode = Reader.NameTable.Add(@"cache-mode");
++ id30_condition = Reader.NameTable.Add(@"condition");
++ id60_proxy = Reader.NameTable.Add(@"proxy");
++ id107_element = Reader.NameTable.Add(@"element");
++ id11_namespace = Reader.NameTable.Add(@"namespace");
++ id102_optimisticlock = Reader.NameTable.Add(@"optimistic-lock");
++ id123_sqltype = Reader.NameTable.Add(@"sql-type");
++ id23_databaseobject = Reader.NameTable.Add(@"database-object");
++ id83_idbag = Reader.NameTable.Add(@"idbag");
++ id141_elementclass = Reader.NameTable.Add(@"element-class");
++ }
++ }
++
++ internal abstract class XmlSerializer1 : System.Xml.Serialization.XmlSerializer {
++ protected override System.Xml.Serialization.XmlSerializationReader CreateReader() {
++ return new XmlSerializationReader1();
++ }
++ protected override System.Xml.Serialization.XmlSerializationWriter CreateWriter() {
++ return new XmlSerializationWriter1();
++ }
++ }
++
++ internal sealed class HbmClassSerializer : XmlSerializer1 {
++
++ public override System.Boolean CanDeserialize(System.Xml.XmlReader xmlReader) {
++ return xmlReader.IsStartElement(@"class", @"urn:nhibernate-mapping-2.2");
++ }
++
++ protected override void Serialize(object objectToSerialize, System.Xml.Serialization.XmlSerializationWriter writer) {
++ ((XmlSerializationWriter1)writer).Write109_class(objectToSerialize);
++ }
++
++ protected override object Deserialize(System.Xml.Serialization.XmlSerializationReader reader) {
++ return ((XmlSerializationReader1)reader).Read109_class();
++ }
++ }
++
++ internal sealed class HbmMappingSerializer : XmlSerializer1 {
++
++ public override System.Boolean CanDeserialize(System.Xml.XmlReader xmlReader) {
++ return xmlReader.IsStartElement(@"hibernate-mapping", @"urn:nhibernate-mapping-2.2");
++ }
++
++ protected override void Serialize(object objectToSerialize, System.Xml.Serialization.XmlSerializationWriter writer) {
++ ((XmlSerializationWriter1)writer).Write110_hibernatemapping(objectToSerialize);
++ }
++
++ protected override object Deserialize(System.Xml.Serialization.XmlSerializationReader reader) {
++ return ((XmlSerializationReader1)reader).Read110_hibernatemapping();
++ }
++ }
++
++ internal class XmlSerializerContract : global::System.Xml.Serialization.XmlSerializerImplementation {
++ public override global::System.Xml.Serialization.XmlSerializationReader Reader { get { return new XmlSerializationReader1(); } }
++ public override global::System.Xml.Serialization.XmlSerializationWriter Writer { get { return new XmlSerializationWriter1(); } }
++ System.Collections.Hashtable readMethods = null;
++ public override System.Collections.Hashtable ReadMethods {
++ get {
++ if (readMethods == null) {
++ System.Collections.Hashtable _tmp = new System.Collections.Hashtable();
++ _tmp[@"NHibernate.Cfg.MappingSchema.HbmClass:urn:nhibernate-mapping-2.2:class:False:"] = @"Read109_class";
++ _tmp[@"NHibernate.Cfg.MappingSchema.HbmMapping:urn:nhibernate-mapping-2.2:hibernate-mapping:False:"] = @"Read110_hibernatemapping";
++ if (readMethods == null) readMethods = _tmp;
++ }
++ return readMethods;
++ }
++ }
++ System.Collections.Hashtable writeMethods = null;
++ public override System.Collections.Hashtable WriteMethods {
++ get {
++ if (writeMethods == null) {
++ System.Collections.Hashtable _tmp = new System.Collections.Hashtable();
++ _tmp[@"NHibernate.Cfg.MappingSchema.HbmClass:urn:nhibernate-mapping-2.2:class:False:"] = @"Write109_class";
++ _tmp[@"NHibernate.Cfg.MappingSchema.HbmMapping:urn:nhibernate-mapping-2.2:hibernate-mapping:False:"] = @"Write110_hibernatemapping";
++ if (writeMethods == null) writeMethods = _tmp;
++ }
++ return writeMethods;
++ }
++ }
++ System.Collections.Hashtable typedSerializers = null;
++ public override System.Collections.Hashtable TypedSerializers {
++ get {
++ if (typedSerializers == null) {
++ System.Collections.Hashtable _tmp = new System.Collections.Hashtable();
++ _tmp.Add(@"NHibernate.Cfg.MappingSchema.HbmMapping:urn:nhibernate-mapping-2.2:hibernate-mapping:False:", new HbmMappingSerializer());
++ _tmp.Add(@"NHibernate.Cfg.MappingSchema.HbmClass:urn:nhibernate-mapping-2.2:class:False:", new HbmClassSerializer());
++ if (typedSerializers == null) typedSerializers = _tmp;
++ }
++ return typedSerializers;
++ }
++ }
++ public override System.Boolean CanSerialize(System.Type type) {
++ if (type == typeof(global::NHibernate.Cfg.MappingSchema.HbmClass)) return true;
++ if (type == typeof(global::NHibernate.Cfg.MappingSchema.HbmMapping)) return true;
++ return false;
++ }
++ public override System.Xml.Serialization.XmlSerializer GetSerializer(System.Type type) {
++ if (type == typeof(global::NHibernate.Cfg.MappingSchema.HbmClass)) return new HbmClassSerializer();
++ if (type == typeof(global::NHibernate.Cfg.MappingSchema.HbmMapping)) return new HbmMappingSerializer();
++ return null;
++ }
++ }
++}
+Index: src/NHibernate/Cfg/XmlHbmBinding/Binder.cs
+===================================================================
+--- src/NHibernate/Cfg/XmlHbmBinding/Binder.cs (revision 5264)
++++ src/NHibernate/Cfg/XmlHbmBinding/Binder.cs (working copy)
+@@ -6,6 +6,7 @@
+ using System.Xml.Serialization;
+
+ using log4net;
++using Microsoft.Xml.Serialization.GeneratedAssembly;
+ using NHibernate.Mapping;
+ using NHibernate.Type;
+ using NHibernate.Util;
+@@ -139,10 +140,23 @@
+ protected static T Deserialize(XmlNode node)
+ {
+ using (StringReader reader = new StringReader(node.OuterXml))
+- return (T) new XmlSerializer(typeof (T)).Deserialize(reader);
++ return (T) GetSerializer(typeof (T)).Deserialize(reader);
+ }
+
+- protected static string GetXmlEnumAttribute(Enum cascadeStyle)
++ private static XmlSerializer GetSerializer(System.Type type)
++ {
++ if (type == typeof(HbmMapping))
++ {
++ return new HbmMappingSerializer();
++ }
++ if (type == typeof(HbmClass))
++ {
++ return new HbmClassSerializer();
++ }
++ return new XmlSerializer(type);
++ }
++
++ protected static string GetXmlEnumAttribute(Enum cascadeStyle)
+ {
+ MemberInfo[] memberInfo = cascadeStyle.GetType().GetMember(cascadeStyle.ToString());
+
+Index: src/NHibernate/Cfg/XmlSchemas.cs
+===================================================================
+--- src/NHibernate/Cfg/XmlSchemas.cs (revision 5264)
++++ src/NHibernate/Cfg/XmlSchemas.cs (working copy)
+@@ -10,12 +10,23 @@
+ private const string CfgSchemaResource = "NHibernate.nhibernate-configuration.xsd";
+ private const string MappingSchemaResource = "NHibernate.nhibernate-mapping.xsd";
+
+- private static readonly XmlSchema ConfigSchema = ReadXmlSchemaFromEmbeddedResource(CfgSchemaResource);
+- private static readonly XmlSchema MappingSchema = ReadXmlSchemaFromEmbeddedResource(MappingSchemaResource);
++ private static XmlSchemaSet ConfigSchema;
++ private static XmlSchemaSet MappingSchema;
+
+ public XmlReaderSettings CreateConfigReaderSettings()
+ {
+- XmlReaderSettings result = CreateXmlReaderSettings(ConfigSchema);
++ if (ConfigSchema == null)
++ {
++ lock (typeof(XmlSchemas))
++ {
++ if (ConfigSchema == null)
++ {
++ ConfigSchema = ReadXmlSchemaSetFromEmbeddedResource(CfgSchemaResource);
++ }
++ }
++ }
++
++ XmlReaderSettings result = CreateXmlReaderSettings(ConfigSchema);
+ result.ValidationEventHandler += new ValidationEventHandler(ConfigSettingsValidationEventHandler);
+ result.IgnoreComments = true;
+ return result;
+@@ -23,22 +34,40 @@
+
+ public XmlReaderSettings CreateMappingReaderSettings()
+ {
+- return CreateXmlReaderSettings(MappingSchema);
++ if (MappingSchema == null)
++ {
++ lock (typeof(XmlSchemas))
++ {
++ if (MappingSchema == null)
++ {
++ MappingSchema = ReadXmlSchemaSetFromEmbeddedResource(MappingSchemaResource);
++ }
++ }
++ }
++
++ return CreateXmlReaderSettings(MappingSchema);
+ }
+
+- private static XmlSchema ReadXmlSchemaFromEmbeddedResource(string resourceName)
++ private static XmlSchemaSet ReadXmlSchemaSetFromEmbeddedResource(string resourceName)
+ {
++ XmlSchemaSet schemaSet = new XmlSchemaSet();
++ schemaSet.Add(ReadXmlSchemaFromEmbeddedResource(resourceName));
++ return schemaSet;
++ }
++
++ private static XmlSchema ReadXmlSchemaFromEmbeddedResource(string resourceName)
++ {
+ Assembly executingAssembly = Assembly.GetExecutingAssembly();
+
+ using (Stream resourceStream = executingAssembly.GetManifestResourceStream(resourceName))
+ return XmlSchema.Read(resourceStream, null);
+ }
+
+- private static XmlReaderSettings CreateXmlReaderSettings(XmlSchema xmlSchema)
++ private static XmlReaderSettings CreateXmlReaderSettings(XmlSchemaSet schemas)
+ {
+ XmlReaderSettings settings = new XmlReaderSettings();
+ settings.ValidationType = ValidationType.Schema;
+- settings.Schemas.Add(xmlSchema);
++ settings.Schemas = schemas;
+ return settings;
+ }
+
+Index: src/NHibernate/NHibernate.csproj
+===================================================================
+--- src/NHibernate/NHibernate.csproj (revision 5264)
++++ src/NHibernate/NHibernate.csproj (working copy)
+@@ -88,6 +104,7 @@
+
+
+
++
+
+
+
diff --git a/src/Orchard/Data/Conventions/RecordTableNameConvention.cs b/src/Orchard/Data/Conventions/RecordTableNameConvention.cs
index e6c3c139f..7613758f4 100644
--- a/src/Orchard/Data/Conventions/RecordTableNameConvention.cs
+++ b/src/Orchard/Data/Conventions/RecordTableNameConvention.cs
@@ -1,3 +1,4 @@
+using System;
using System.Collections.Generic;
using System.Linq;
using FluentNHibernate.Conventions;
@@ -8,15 +9,15 @@ using Orchard.Environment.ShellBuilders.Models;
namespace Orchard.Data.Conventions {
public class RecordTableNameConvention : IClassConvention {
- private readonly IEnumerable _descriptors;
+ private readonly Dictionary _descriptors;
public RecordTableNameConvention(IEnumerable descriptors) {
- _descriptors = descriptors;
+ _descriptors = descriptors.ToDictionary(d => d.Type);
}
public void Apply(IClassInstance instance) {
- var desc = _descriptors.Where(d => d.Type == instance.EntityType).SingleOrDefault();
- if (desc != null) {
+ RecordBlueprint desc;
+ if (_descriptors.TryGetValue(instance.EntityType, out desc)) {
instance.Table(desc.TableName);
}
}